Top Level Namespace
Defined Under Namespace
Modules: Cheffish, Fhcap Classes: Chef
Instance Method Summary collapse
- #aws_bootstrap_options(org_name, environment, instance_options) ⇒ Object
- #aws_converge_options(org_name, environment, instance_options) ⇒ Object
-
#aws_machine_options(org_name, environment, instance_options) ⇒ Object
AWS.
- #bootstrap_options_for(provider, org_name, environment, instance_options) ⇒ Object
- #cert_name_for(org_name, environment, cert_name) ⇒ Object
- #cluster_config_for(node) ⇒ Object
- #converge_options_for(provider, org_name, environment, instance_options) ⇒ Object
- #fh_name_for(*args) ⇒ Object
- #inbound_rules_for(org_name, ingress) ⇒ Object
- #instance_name_for(org_name, environment, name) ⇒ Object
- #internet_gateway_name_for(name) ⇒ Object
- #key_pair_name_for(name) ⇒ Object
- #load_balancer_name_for(org_name, environment, lb_name) ⇒ Object
- #machine_options_for(provider, org_name, environment, instance_options) ⇒ Object
- #node_names_for(cluster_config) ⇒ Object
- #openstack_bootstrap_options(org_name, environment, instance_options) ⇒ Object
- #openstack_converge_options(org_name, environment, instance_options) ⇒ Object
-
#openstack_machine_options(org_name, environment, instance_options) ⇒ Object
OpenStack.
- #route_table_name_for(org_name, environment) ⇒ Object
- #security_group_name_for(name, environment) ⇒ Object
- #subnet_name_for(name, environment, suffix) ⇒ Object
- #volume_name_for(*args) ⇒ Object
- #vpc_name_for(name) ⇒ Object
- #with_cluster_config(node, &block) ⇒ Object
- #with_cluster_instances(node, &block) ⇒ Object
Instance Method Details
#aws_bootstrap_options(org_name, environment, instance_options) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 49 def (org_name, environment, ) = { image_id: [:image_id], instance_type: [:instance_type], key_name: key_pair_name_for(org_name) #key_path: "~/.chef/keys/chef_default" } [:subnet] = subnet_name_for(org_name, environment, [:subnet]) [:security_group_ids] = [:security_groups].collect do |security_group| security_group_name_for(org_name, security_group) end [:block_device_mappings] = [:block_device_mappings] end |
#aws_converge_options(org_name, environment, instance_options) ⇒ Object
64 65 66 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 64 def (org_name, environment, ) {:chef_version => '11.10.4'} end |
#aws_machine_options(org_name, environment, instance_options) ⇒ Object
AWS
42 43 44 45 46 47 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 42 def (org_name, environment, ) { :bootstrap_options => ('aws', org_name, environment, ), :convergence_options => ('aws', org_name, environment, ), } end |
#bootstrap_options_for(provider, org_name, environment, instance_options) ⇒ Object
32 33 34 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 32 def (provider, org_name, environment, ) send(:"#{provider}_bootstrap_options", org_name, environment, ) end |
#cert_name_for(org_name, environment, cert_name) ⇒ Object
128 129 130 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 128 def cert_name_for(org_name, environment, cert_name) fh_name_for('fh-crt', org_name, environment, cert_name) end |
#cluster_config_for(node) ⇒ Object
138 139 140 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 138 def cluster_config_for(node) JSON.parse(node.normal.to_json, {:symbolize_names => true}) end |
#converge_options_for(provider, org_name, environment, instance_options) ⇒ Object
36 37 38 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 36 def (provider, org_name, environment, ) send(:"#{provider}_converge_options", org_name, environment, ) end |
#fh_name_for(*args) ⇒ Object
132 133 134 135 136 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 132 def fh_name_for(*args) args.collect do |str| str.to_s.split('-') end.flatten.uniq.join('-') end |
#inbound_rules_for(org_name, ingress) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 12 def inbound_rules_for(org_name, ingress) ingress.collect do |ai| sources = ai[:sources] || [] sources += ai[:groups].collect { |group| security_group_name_for(org_name, group) } if ai[:groups] protocols = ai[:protocols].collect { |p| p } if protocols.delete 'all' protocols += ['tcp', 'udp'] end protocols.uniq! protocols.collect do |protocol| {port: ai[:start]..ai[:end], protocol: protocol, sources: sources} end end.flatten end |
#instance_name_for(org_name, environment, name) ⇒ Object
116 117 118 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 116 def instance_name_for(org_name, environment, name) fh_name_for(org_name, environment, name) end |
#internet_gateway_name_for(name) ⇒ Object
96 97 98 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 96 def internet_gateway_name_for(name) fh_name_for('fh-igw', name) end |
#key_pair_name_for(name) ⇒ Object
92 93 94 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 92 def key_pair_name_for(name) fh_name_for('fh-kp', name) end |
#load_balancer_name_for(org_name, environment, lb_name) ⇒ Object
124 125 126 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 124 def load_balancer_name_for(org_name, environment, lb_name) fh_name_for('fh-lb', org_name, environment, lb_name)[0..31] #elb names have a max length of 32 end |
#machine_options_for(provider, org_name, environment, instance_options) ⇒ Object
28 29 30 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 28 def (provider, org_name, environment, ) send(:"#{provider}_machine_options", org_name, environment, ) end |
#node_names_for(cluster_config) ⇒ Object
1 2 3 4 5 6 7 8 9 10 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 1 def node_names_for(cluster_config) org_name = cluster_config[:id] #If we are using chef-client in local mode (-z) we can't search :-( #node_names = search(:node, "chef_environment:*").map { |n| n.name } cluster_config[:environments].collect do |env_name, env_cfg| env_cfg[:instances].collect do |name, cfg| instance_name_for(org_name, env_name, name) end if env_cfg[:instances] end.flatten end |
#openstack_bootstrap_options(org_name, environment, instance_options) ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 79 def (org_name, environment, ) { flavor_ref: [:flavor_ref], image_ref: [:image_ref], key_name: key_pair_name_for(org_name), user_id: "ubuntu" } end |
#openstack_converge_options(org_name, environment, instance_options) ⇒ Object
88 89 90 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 88 def (org_name, environment, ) {:chef_version => '11.10.4', :ohai_hints => { :openstack => {} }} end |
#openstack_machine_options(org_name, environment, instance_options) ⇒ Object
OpenStack
70 71 72 73 74 75 76 77 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 70 def (org_name, environment, ) { :bootstrap_options => ('openstack', org_name, environment, ), :convergence_options => ('openstack', org_name, environment, ), :floating_ip_pool => [:floating_ip_pool], :ssh_username => "ubuntu" } end |
#route_table_name_for(org_name, environment) ⇒ Object
108 109 110 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 108 def route_table_name_for(org_name, environment) fh_name_for('fh-rt', org_name, environment) end |
#security_group_name_for(name, environment) ⇒ Object
104 105 106 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 104 def security_group_name_for(name, environment) fh_name_for('fh-sg', name, environment) end |
#subnet_name_for(name, environment, suffix) ⇒ Object
112 113 114 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 112 def subnet_name_for(name, environment, suffix) fh_name_for('fh-net', name, environment, suffix) end |
#volume_name_for(*args) ⇒ Object
120 121 122 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 120 def volume_name_for(*args) fh_name_for('fh-vol', *args) end |
#vpc_name_for(name) ⇒ Object
100 101 102 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 100 def vpc_name_for(name) fh_name_for('fh-vpc', name) end |
#with_cluster_config(node, &block) ⇒ Object
142 143 144 145 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 142 def with_cluster_config(node, &block) cluster_config = cluster_config_for(node) block.call cluster_config end |
#with_cluster_instances(node, &block) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 147 def with_cluster_instances(node, &block) with_cluster_config(node) do |cluster_config| org_name = cluster_config[:id] = cluster_config[:default_instance_options] instances = {} cluster_config[:environments].each do |env, env_config| chef_environment = fh_name_for(org_name, env) instances[chef_environment] = {} env_config[:instances].each do |instance_name, instance_config| instances[chef_environment][instance_name_for(org_name, env, instance_name)] = {} instances[chef_environment][instance_name_for(org_name, env, instance_name)][:instance_config] = instance_config instances[chef_environment][instance_name_for(org_name, env, instance_name)][:machine_options] = (cluster_config[:driver], org_name, env, .merge(instance_config[cluster_config[:driver].to_sym] || {})) end end block.call instances end end |