open-dock 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -5
- data/lib/open-dock/commands/ship_host.rb +6 -4
- data/lib/open-dock/commands/unship_host.rb +1 -1
- data/lib/open-dock/docker.rb +24 -0
- data/lib/open-dock/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6f95a46172f0a2194702ba0a6219e3b5c7a2102a
         | 
| 4 | 
            +
              data.tar.gz: 129b68d7a9c44cf0d89ce8718f0bd46196247c7d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b3f5e9f131355747abb2abb46661fe5b5d381b8fdad3374b911f4e3e09bedf133b31806e5decd3048023d1b989c45772ed1b7f0c4c7fe0391a7687607aa165a5
         | 
| 7 | 
            +
              data.tar.gz: e1f4836d8cdc76ac7e456b75886f931fcf36c073d95560de9415ed7fb41eae243891f3fc3947cd4aa946a1ad619c97d183d9534b0ad889ea1c2e11a234532922
         | 
    
        data/README.md
    CHANGED
    
    | @@ -138,9 +138,9 @@ www: | |
| 138 138 | 
             
            #  cpuset: 0-7
         | 
| 139 139 |  | 
| 140 140 | 
             
            # POST-CONDITIONS: execute after build the container:
         | 
| 141 | 
            -
              post-conditions:
         | 
| 142 | 
            -
                - sshpass -p 'J3mw?$_6' ssh-copy-id -o 'StrictHostKeyChecking no' -i ~/.ssh/id_rsa.pub root@lebrijo.com -p 2222
         | 
| 143 | 
            -
                - ssh root@lebrijo.com -p 2222 "echo 'root:Kxxxxx1' | chpasswd"
         | 
| 141 | 
            +
            #  post-conditions:
         | 
| 142 | 
            +
            #    - sshpass -p 'J3mw?$_6' ssh-copy-id -o 'StrictHostKeyChecking no' -i ~/.ssh/id_rsa.pub root@lebrijo.com -p 2222
         | 
| 143 | 
            +
            #    - ssh root@lebrijo.com -p 2222 "echo 'root:Kxxxxx1' | chpasswd"
         | 
| 144 144 |  | 
| 145 145 | 
             
            # here you can create other containers
         | 
| 146 146 | 
             
            # db:
         | 
| @@ -150,6 +150,8 @@ www: | |
| 150 150 |  | 
| 151 151 | 
             
            `ops ship example.com` will create all containers configured on 'containers/example.com.yml' file
         | 
| 152 152 |  | 
| 153 | 
            +
            Note: host SSH credentials (id_rsa.pub and authorized_keys) are copied by default to container, in order to have the same access to conainer.
         | 
| 154 | 
            +
             | 
| 153 155 | 
             
            ### Shipping your local Docker
         | 
| 154 156 |  | 
| 155 157 | 
             
            You can create a file `containers/localhost.example.com.yml` where you can define containers. And launch them on your workstation:
         | 
| @@ -160,7 +162,7 @@ ops ship localhost.example.com | |
| 160 162 |  | 
| 161 163 | 
             
            By convention:
         | 
| 162 164 |  | 
| 163 | 
            -
            * If [host_name]  | 
| 165 | 
            +
            * If [host_name] includes "localhost" string, it is assumed that containers are shipped as docker containers in local workstation
         | 
| 164 166 |  | 
| 165 167 | 
             
            ## Configure Containers (are nodes for Chef)
         | 
| 166 168 |  | 
| @@ -189,6 +191,7 @@ Create/delete domain names, create/delete hosts and ship/unship hosts: | |
| 189 191 | 
             
            * `ops unship HOST_NAME`
         | 
| 190 192 | 
             
            * TODO: `ops reship HOST_NAME` unship/ship all containers from host.
         | 
| 191 193 | 
             
            * `ops configure HOST_NAME` configure all containers with chef.
         | 
| 194 | 
            +
            * TODO: `ops ssh [CONTAINER_NAME] HOST_NAME` ssh connection to host or container
         | 
| 192 195 |  | 
| 193 196 | 
             
            ## Create your infrastructure project (/ops)
         | 
| 194 197 |  | 
| @@ -262,4 +265,8 @@ Create command `ops configure [host_name]` this will cook all containers. By con | |
| 262 265 | 
             
            * "root" is the user in all containers
         | 
| 263 266 | 
             
            * Each container configuration is defined in a Chef node: `nodes/[container_name].[host_name].json`
         | 
| 264 267 | 
             
            * Then you have to create all container name records in your DNS provider: `[container_name].[host_name]   CNAME   [host_name].`
         | 
| 265 | 
            -
            * If [host_name] include "localhost" string, it is assumed that containers are shipped on local workstation
         | 
| 268 | 
            +
            * If [host_name] include "localhost" string, it is assumed that containers are shipped on local workstation
         | 
| 269 | 
            +
             | 
| 270 | 
            +
            ### v0.1.2
         | 
| 271 | 
            +
             | 
| 272 | 
            +
            * Delete post-conditions from containers files. By default host credentials are passed to conainers.
         | 
| @@ -17,14 +17,16 @@ command :ship do |c| | |
| 17 17 | 
             
                  command = "docker run #{options.join(" ")} --name #{container_name} #{ports} #{config["image"]} #{config["command"]}"
         | 
| 18 18 | 
             
                  say "Docker CMD: #{command}\n"
         | 
| 19 19 | 
             
                  if host.include? "localhost"
         | 
| 20 | 
            -
                    system command
         | 
| 20 | 
            +
                    system "#{command} ; #{Docker::copy_ssh_credentials_command(container_name)}"
         | 
| 21 21 | 
             
                  else
         | 
| 22 22 | 
             
                    Net::SSH.start(host, user) do |ssh|
         | 
| 23 | 
            -
                      ssh.exec command
         | 
| 23 | 
            +
                      ssh.exec "#{command} ; #{Docker::copy_ssh_credentials_command(container_name)}"
         | 
| 24 24 | 
             
                    end
         | 
| 25 25 | 
             
                  end
         | 
| 26 | 
            -
                   | 
| 27 | 
            -
             | 
| 26 | 
            +
                  if config["post-conditions"]
         | 
| 27 | 
            +
                    sleep 5
         | 
| 28 | 
            +
                    config["post-conditions"].each { |c| system c }
         | 
| 29 | 
            +
                  end
         | 
| 28 30 | 
             
                end
         | 
| 29 31 | 
             
              end
         | 
| 30 32 | 
             
            end
         | 
    
        data/lib/open-dock/docker.rb
    CHANGED
    
    | @@ -14,4 +14,28 @@ module Docker | |
| 14 14 | 
             
                end
         | 
| 15 15 | 
             
              end
         | 
| 16 16 |  | 
| 17 | 
            +
              def self.copy_ssh_credentials_command(container_name)
         | 
| 18 | 
            +
                <<-EOH
         | 
| 19 | 
            +
                  # Container folder
         | 
| 20 | 
            +
                  if sudo test -d "/var/lib/docker/aufs"; then
         | 
| 21 | 
            +
                    CONTAINERS_DIR=/var/lib/docker/aufs/mnt
         | 
| 22 | 
            +
                  elif sudo test -d "/var/lib/docker/aufs"; then
         | 
| 23 | 
            +
                    CONTAINERS_DIR=/var/lib/docker/btrfs/subvolumes
         | 
| 24 | 
            +
                  fi
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  ID=$(docker inspect -f   '{{.Id}}' #{container_name})
         | 
| 27 | 
            +
                  SSH_DIR=$CONTAINERS_DIR/$ID/root/.ssh
         | 
| 28 | 
            +
                  echo SSH container folder is $SSH_DIR
         | 
| 29 | 
            +
                  if sudo test ! -d "$SSH_DIR" ; then
         | 
| 30 | 
            +
                    sudo mkdir $SSH_DIR
         | 
| 31 | 
            +
                  fi
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  echo Copying authorized_keys and id_rsa.pub files
         | 
| 34 | 
            +
                  sudo touch $SSH_DIR/authorized_keys
         | 
| 35 | 
            +
                  sudo cat ~/.ssh/authorized_keys | sudo tee -a $SSH_DIR/authorized_keys
         | 
| 36 | 
            +
                  sudo cat ~/.ssh/id_rsa.pub | sudo tee -a $SSH_DIR/authorized_keys
         | 
| 37 | 
            +
                  sudo chmod 600 $SSH_DIR/authorized_keys
         | 
| 38 | 
            +
                EOH
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 17 41 | 
             
            end
         | 
    
        data/lib/open-dock/version.rb
    CHANGED