fhcap-cli 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +2 -0
- data/lib/cookbooks/provision/libraries/provision.rb +24 -0
- data/lib/cookbooks/provision/recipes/aws_cluster_create.rb +1 -2
- data/lib/cookbooks/provision/recipes/cluster_create_instances.rb +14 -0
- data/lib/cookbooks/provision/recipes/cluster_destroy_instances.rb +6 -6
- data/lib/cookbooks/provision/recipes/cluster_provision_instances.rb +7 -47
- data/lib/cookbooks/provision/recipes/openstack_cluster_create.rb +9 -9
- data/lib/cookbooks/provision/recipes/seed_cookbooks.rb +38 -0
- data/lib/fhcap/cli.rb +4 -0
- data/lib/fhcap/cluster.rb +13 -1
- data/lib/fhcap/config.rb +4 -0
- data/lib/fhcap/cookbook.rb +10 -0
- data/lib/fhcap/dns.rb +60 -0
- data/lib/fhcap/misc.rb +17 -24
- data/lib/fhcap/tasks/chef/chef_server_task.rb +105 -0
- data/lib/fhcap/tasks/chef/chef_task_base.rb +2 -40
- data/lib/fhcap/tasks/chef/chef_zero_server.rb +35 -0
- data/lib/fhcap/tasks/chef/cookbook/archive.rb +42 -0
- data/lib/fhcap/tasks/chef/cookbook/update_metadata.rb +1 -1
- data/lib/fhcap/tasks/chef/environments/destroy.rb +10 -10
- data/lib/fhcap/tasks/chef/provisioning/chef_provisioning_task.rb +3 -1
- data/lib/fhcap/tasks/chef/provisioning/chef_provisioning_task_base.rb +14 -7
- data/lib/fhcap/tasks/chef/provisioning/create.rb +12 -3
- data/lib/fhcap/tasks/chef/provisioning/destroy.rb +5 -2
- data/lib/fhcap/tasks/chef/provisioning/provision.rb +4 -2
- data/lib/fhcap/tasks/chef/server/bootstrap.rb +47 -122
- data/lib/fhcap/tasks/chef/server/info.rb +8 -7
- data/lib/fhcap/tasks/chef/server/provision.rb +17 -17
- data/lib/fhcap/tasks/cluster/chef_provisioning_task.rb +16 -0
- data/lib/fhcap/tasks/cluster/cluster_task_base.rb +8 -0
- data/lib/fhcap/tasks/cluster/create.rb +6 -5
- data/lib/fhcap/tasks/cluster/destroy.rb +15 -4
- data/lib/fhcap/tasks/cluster/destroy_environment.rb +1 -1
- data/lib/fhcap/tasks/cluster/info.rb +1 -1
- data/lib/fhcap/tasks/cluster/provision.rb +3 -3
- data/lib/fhcap/tasks/cluster/status.rb +1 -1
- data/lib/fhcap/tasks/dns/create_record.rb +79 -0
- data/lib/fhcap/tasks/dns/delete_record.rb +55 -0
- data/lib/fhcap/tasks/dns/list.rb +37 -0
- data/lib/fhcap/tasks/dns/route53_helper.rb +48 -0
- data/lib/fhcap/tasks/knife/add.rb +43 -8
- data/lib/fhcap/tasks/repo/checkout.rb +1 -0
- data/lib/fhcap/tasks/task_base.rb +25 -0
- data/lib/fhcap/version.rb +1 -1
- data/spec/fhcap/tasks/dns/create_record_spec.rb +34 -0
- data/spec/fhcap/tasks/dns/delete_record_spec.rb +30 -0
- data/templates/chef/environment_core.json.erb +1 -1
- data/templates/cluster/aws/common.json.erb +1 -1
- data/templates/cluster/aws/core-small-9node.json.erb +3 -3
- data/templates/cluster/aws/single-blank.json.erb +2 -1
- data/templates/cluster/openstack/core-3node.json.erb +1 -1
- data/templates/cluster/openstack/core-small-9node.json.erb +4 -4
- data/templates/cluster/openstack/mbaas-3node.json.erb +2 -2
- data/templates/cluster/openstack/single-blank.json.erb +0 -1
- data/templates/init/knife_local.rb.erb +9 -0
- metadata +19 -4
- data/lib/fhcap/tasks/misc/create_dns_record.rb +0 -100
@@ -1,100 +0,0 @@
|
|
1
|
-
require 'fhcap/tasks/task_base'
|
2
|
-
require 'aws-sdk'
|
3
|
-
require 'public_suffix'
|
4
|
-
|
5
|
-
# fhcap misc create_dns_record --domain *.test.skunkhenry.com --ipaddress 192.168.33.10
|
6
|
-
# fhcap misc create_dns_record --domain *.test2.skunkhenry.com --alias-target dns_name:fh-lb-eng2-core-studio-584044547.eu-central-1.elb.amazonaws.com hosted_zone_id:Z215JYRZR1TBD5
|
7
|
-
|
8
|
-
module Fhcap
|
9
|
-
module Tasks
|
10
|
-
module Misc
|
11
|
-
class CreateDNSRecord < TaskBase
|
12
|
-
|
13
|
-
attr_reader :domain, :ipaddress, :alias_target, :ttl
|
14
|
-
|
15
|
-
def initialize(options)
|
16
|
-
super
|
17
|
-
@domain = options[:domain]
|
18
|
-
@alias_target = options[:'alias-target']
|
19
|
-
@ipaddress = options[:ipaddress]
|
20
|
-
@ttl = options[:ttl] || 300
|
21
|
-
end
|
22
|
-
|
23
|
-
def run
|
24
|
-
thor.say "CreateDNSRecord: name = #{domain}, ipaddress = #{ipaddress}, ttl = #{ttl}", :yellow
|
25
|
-
|
26
|
-
host_domain = PublicSuffix.parse(domain).domain
|
27
|
-
provider = provider_for(host_domain)
|
28
|
-
|
29
|
-
if provider
|
30
|
-
begin
|
31
|
-
cfg = provider_config(provider)
|
32
|
-
region = provider_regions(provider).keys.first
|
33
|
-
creds = cfg[:credentials]
|
34
|
-
client = Aws::Route53::Client.new(
|
35
|
-
region: region,
|
36
|
-
access_key_id: creds[:'aws-access-key'],
|
37
|
-
secret_access_key: creds[:'aws-secret-key']
|
38
|
-
)
|
39
|
-
resp = client.list_hosted_zones
|
40
|
-
zone = resp.hosted_zones.reject { |z| !(z.name =~ /#{host_domain}/) }.first
|
41
|
-
|
42
|
-
if zone
|
43
|
-
thor.say "Found zone id: #{zone.id}, name: #{zone.name}"
|
44
|
-
resp = client.list_resource_record_sets({
|
45
|
-
hosted_zone_id: zone.id,
|
46
|
-
start_record_name: domain,
|
47
|
-
start_record_type: "A",
|
48
|
-
max_items: 1
|
49
|
-
})
|
50
|
-
record_set = resp.resource_record_sets.reject { |z| !(z.name =~ /^#{domain}/) }.first
|
51
|
-
if record_set
|
52
|
-
thor.say "Found existing record set, id: name: #{record_set.name}, type: #{record_set.type}, record_set: #{record_set.resource_records || 'None'}, alias_target: #{record_set.alias_target || 'None'}\n"
|
53
|
-
else
|
54
|
-
change_request = {
|
55
|
-
:action => 'CREATE',
|
56
|
-
:resource_record_set => {
|
57
|
-
:name => domain,
|
58
|
-
:type => "A"
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
if @alias_target
|
63
|
-
change_request[:resource_record_set].merge!(
|
64
|
-
{
|
65
|
-
alias_target: {
|
66
|
-
evaluate_target_health: false
|
67
|
-
}.merge!(@alias_target)
|
68
|
-
}
|
69
|
-
)
|
70
|
-
else
|
71
|
-
change_request[:resource_record_set].merge!(
|
72
|
-
{
|
73
|
-
:ttl => ttl,
|
74
|
-
:resource_records => [{:value => ipaddress}]
|
75
|
-
}
|
76
|
-
)
|
77
|
-
end
|
78
|
-
|
79
|
-
client.change_resource_record_sets({
|
80
|
-
:hosted_zone_id => zone.id,
|
81
|
-
:change_batch => {
|
82
|
-
:changes => [change_request]
|
83
|
-
}
|
84
|
-
})
|
85
|
-
end
|
86
|
-
else
|
87
|
-
thor.say_status 'error', "Can't get hosted zone for '#{host_domain}'", :red
|
88
|
-
end
|
89
|
-
rescue Aws::Route53::Errors::ServiceError => e
|
90
|
-
thor.say_status 'error', e.message, :red
|
91
|
-
end
|
92
|
-
else
|
93
|
-
thor.say_status 'error', "No DNS provider configured for '#{domain}'", :red
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|