Top Level Namespace
Defined Under Namespace
Modules: ChefZero, 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_name, 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_name, 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_name, 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
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 52 def (org_name, environment, ) = { image_id: [:image_id], instance_type: [:instance_type], key_name: key_pair_name_for(org_name) } [:subnet] = subnet_name_for(org_name, environment, [:subnet]) if [:subnet] [:security_group_ids] = [:security_groups].collect do |security_group| security_group_name_for(org_name, security_group) end if [:security_groups] [:block_device_mappings] = [:block_device_mappings] if [:block_device_mappings] end |
#aws_converge_options(org_name, environment, instance_options) ⇒ Object
66 67 68 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 66 def (org_name, environment, ) {:chef_version => '11.10.4'} end |
#aws_machine_options(org_name, environment, instance_name, instance_options) ⇒ Object
AWS
44 45 46 47 48 49 50 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 44 def (org_name, environment, instance_name, ) { :bootstrap_options => ('aws', org_name, environment, ), :convergence_options => ('aws', org_name, environment, ), :aws_tags => {'Name' => instance_name, 'fh-tag-org' => org_name, 'fh-tag-environment' => [org_name,environment].join('-'), 'fh-tag-role' => instance_name.split('-').last.gsub(/\d+/, "")} } end |
#bootstrap_options_for(provider, org_name, environment, instance_options) ⇒ Object
34 35 36 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 34 def (provider, org_name, environment, ) send(:"#{provider}_bootstrap_options", org_name, environment, ) end |
#cert_name_for(org_name, environment, cert_name) ⇒ Object
130 131 132 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 130 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
140 141 142 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 140 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
38 39 40 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 38 def (provider, org_name, environment, ) send(:"#{provider}_converge_options", org_name, environment, ) end |
#fh_name_for(*args) ⇒ Object
134 135 136 137 138 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 134 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
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 14 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
118 119 120 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 118 def instance_name_for(org_name, environment, name) fh_name_for(org_name, environment, name) end |
#internet_gateway_name_for(name) ⇒ Object
98 99 100 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 98 def internet_gateway_name_for(name) fh_name_for('fh-igw', name) end |
#key_pair_name_for(name) ⇒ Object
94 95 96 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 94 def key_pair_name_for(name) fh_name_for('fh-kp', name) end |
#load_balancer_name_for(org_name, environment, lb_name) ⇒ Object
126 127 128 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 126 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_name, instance_options) ⇒ Object
30 31 32 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 30 def (provider, org_name, environment, instance_name, ) send(:"#{provider}_machine_options", org_name, environment, instance_name, ) end |
#node_names_for(cluster_config) ⇒ Object
3 4 5 6 7 8 9 10 11 12 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 3 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
81 82 83 84 85 86 87 88 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 81 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
90 91 92 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 90 def (org_name, environment, ) {:chef_version => '11.10.4', :ohai_hints => { :openstack => {} }} end |
#openstack_machine_options(org_name, environment, instance_name, instance_options) ⇒ Object
OpenStack
72 73 74 75 76 77 78 79 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 72 def (org_name, environment, instance_name, ) { :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
110 111 112 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 110 def route_table_name_for(org_name, environment) fh_name_for('fh-rt', org_name, environment) end |
#security_group_name_for(name, environment) ⇒ Object
106 107 108 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 106 def security_group_name_for(name, environment) fh_name_for('fh-sg', name, environment) end |
#subnet_name_for(name, environment, suffix) ⇒ Object
114 115 116 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 114 def subnet_name_for(name, environment, suffix) fh_name_for('fh-net', name, environment, suffix) end |
#volume_name_for(*args) ⇒ Object
122 123 124 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 122 def volume_name_for(*args) fh_name_for('fh-vol', *args) end |
#vpc_name_for(name) ⇒ Object
102 103 104 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 102 def vpc_name_for(name) fh_name_for('fh-vpc', name) end |
#with_cluster_config(node, &block) ⇒ Object
144 145 146 147 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 144 def with_cluster_config(node, &block) cluster_config = cluster_config_for(node) block.call cluster_config end |
#with_cluster_instances(node, &block) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/cookbooks/provision/libraries/provision.rb', line 149 def with_cluster_instances(node, &block) env_regexp = node[:'env-regexp'] || '.' node_regexp = node[:'node-regexp'] || '.' 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) if chef_environment =~ /#{env_regexp}/ instances[chef_environment] = {} env_config[:instances].each do |instance_name, instance_config| instance_name = instance_name_for(org_name, env, instance_name) if instance_name =~ /#{node_regexp}/ instances[chef_environment][instance_name] = {} instances[chef_environment][instance_name][:instance_config] = instance_config = (cluster_config[:driver], org_name, env, instance_name, .merge(instance_config[cluster_config[:driver].to_sym] || {})) .deep_merge!(JSON.parse(node[:machine_options].to_json, {:symbolize_names => true})) if node[:machine_options] .deep_merge!(JSON.parse(instance_config[:machine_options].to_json, {:symbolize_names => true})) if instance_config[:machine_options] instances[chef_environment][instance_name][:machine_options] = end end end end block.call instances end end |