• Posted on

    Reflections on IaC using Terraform

    Terraform has emerged as one of the top open source infrastructure as code (IaC) tools, since its initial release by Hashicorp back in 2014.

    The design philosophy behind the tool is to have declarative, and stateful representation for the underlying IT infrastructure (whether it be on public, on-premise, or hybrid cloud), which in turns simplify the control, collaboration, and auditing of such resources.

    The classical example for provisioning AWS EC2 instance concisely captures the design principles.

  • Posted on

    A Git Book on Linux SysOps Essentials

    I have published a short handbook on basic Linux administration covering multiple topics 📕

    There are cheatsheets that help in various tasks.

    I hope you like it and it would be of a good benefit to interested people.

  • Posted on

    Resolving Image Creation Failure on DockerD due Pool Size Limit


    Problem

    Sometimes, when working with docker engine on CI systems, certain type of errors could arise from the challenging restrictions or limits on the environment. This is typical with the inherent server-client architecture of docker.

    Here’s one of the problems that I’ve seen recently. When a client is connecting to dockerd in order to build an application image or prepare and pull external images, the server reports this issue:

    failed to prepare a4mv4dh8qcq283c7x47a4nwpg: devmapper: Thin Pool has 161986 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior
    
  • Posted on

    Using UUIDs as Primary Key for Active Record Models

    It’s advised that using universally unique identifiers (UUIDs) for exposed resource identifiers is more secure, and convenient for database distribution.

    As expected, it’s relatively simple to configure Active Record to generate with UUID primary key based migrations.

    Setup

    Here are the steps:

    1. Setup the default generation inside config/application.rb:

      # config/application.rb
         
      module SampleApp
        class Application < Rails::Application
          ...
          # Change the primary key default type to UUIDs.
          config.generators do |g|
            g.orm :active_record, primary_key_type: :uuid
          end
         end
      end
      
  • Posted on

    Optimize Image Files from Your Terminal

    In many times you may find yourself in need for optimzing rapidly a bunch of images in your hands. There are handy utility libraries that can help you reduce image sizes with simple commands in the terminal. The following lists some of these tools:

    1. OptiPNG: Advanced PNG Optimizer:

    Get it for Mac OS X:

    brew install optipng
    

    For Linux Ubuntu:

    apt-get install optipng
    

    To optimize an image, run:

    optipng <img-name>.png