Sha256: 4090a80f9cf55353bc2567ee64e99a55a15256bb414e5644f5642727c6c4002b

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

command :configure do |c|
  c.summary = 'Configure all Docker containers in a host using knife solo'
  c.syntax = 'ops configure [host_name]'
  c.description = "Configure all docker containers described in #{Ops::CONTAINERS_DIR}/[host_name].yml"
  c.option '--container CONTAINER_NAME', String, 'Only configure this container'
  c.example "Create a container called 'www' in the host example.com. This is described in '#{Ops::CONTAINERS_DIR}/example.com.yml' like:\n    #      www:\n    #        detach: true\n    #        image: jlebrijo/prun\n    #        ports:\n    #          - '2222:22'\n    #          - '80:80'\n    #      db:\n    #        detach: true\n    #        image: jlebrijo/prun-db\n    #        ports:\n    #          - '2223:22'\n    #          - '5432'\n    # Equivalent to run:\n    #      knife solo cook root@www.example.com -p 2222\n    #      knife solo cook root@db.example.com -p 2223'\n    # So you will need to create chef node files as 'nodes/[container_name].[host_name].json':\n    #      nodes/www.example.com.json\n    #      nodes/db.example.com.json", 'ops configure example.com'
  c.action do |args, options|
    options.default container: 'all'
    host = args[0]
    user = Docker::DEFAULT_USER
    containers = Docker::containers_for(host)

    if options.container == "all"
      containers.each do |container_name, config|
        ssh_port = get_port config
        Chef::cook(user,container_name, host, ssh_port)
      end
    else
      ssh_port = get_port containers[options.container]
      Chef::cook(user, options.container, host, ssh_port)
    end
  end

  def get_port(config)
    config["ports"].select{|port| port.end_with? ":22"}[0].split(':')[0]
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
open-dock-0.1.2 lib/open-dock/commands/configure_host.rb
open-dock-0.1.1 lib/open-dock/commands/configure_host.rb