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 |