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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +2 -0
  4. data/lib/cookbooks/provision/libraries/provision.rb +24 -0
  5. data/lib/cookbooks/provision/recipes/aws_cluster_create.rb +1 -2
  6. data/lib/cookbooks/provision/recipes/cluster_create_instances.rb +14 -0
  7. data/lib/cookbooks/provision/recipes/cluster_destroy_instances.rb +6 -6
  8. data/lib/cookbooks/provision/recipes/cluster_provision_instances.rb +7 -47
  9. data/lib/cookbooks/provision/recipes/openstack_cluster_create.rb +9 -9
  10. data/lib/cookbooks/provision/recipes/seed_cookbooks.rb +38 -0
  11. data/lib/fhcap/cli.rb +4 -0
  12. data/lib/fhcap/cluster.rb +13 -1
  13. data/lib/fhcap/config.rb +4 -0
  14. data/lib/fhcap/cookbook.rb +10 -0
  15. data/lib/fhcap/dns.rb +60 -0
  16. data/lib/fhcap/misc.rb +17 -24
  17. data/lib/fhcap/tasks/chef/chef_server_task.rb +105 -0
  18. data/lib/fhcap/tasks/chef/chef_task_base.rb +2 -40
  19. data/lib/fhcap/tasks/chef/chef_zero_server.rb +35 -0
  20. data/lib/fhcap/tasks/chef/cookbook/archive.rb +42 -0
  21. data/lib/fhcap/tasks/chef/cookbook/update_metadata.rb +1 -1
  22. data/lib/fhcap/tasks/chef/environments/destroy.rb +10 -10
  23. data/lib/fhcap/tasks/chef/provisioning/chef_provisioning_task.rb +3 -1
  24. data/lib/fhcap/tasks/chef/provisioning/chef_provisioning_task_base.rb +14 -7
  25. data/lib/fhcap/tasks/chef/provisioning/create.rb +12 -3
  26. data/lib/fhcap/tasks/chef/provisioning/destroy.rb +5 -2
  27. data/lib/fhcap/tasks/chef/provisioning/provision.rb +4 -2
  28. data/lib/fhcap/tasks/chef/server/bootstrap.rb +47 -122
  29. data/lib/fhcap/tasks/chef/server/info.rb +8 -7
  30. data/lib/fhcap/tasks/chef/server/provision.rb +17 -17
  31. data/lib/fhcap/tasks/cluster/chef_provisioning_task.rb +16 -0
  32. data/lib/fhcap/tasks/cluster/cluster_task_base.rb +8 -0
  33. data/lib/fhcap/tasks/cluster/create.rb +6 -5
  34. data/lib/fhcap/tasks/cluster/destroy.rb +15 -4
  35. data/lib/fhcap/tasks/cluster/destroy_environment.rb +1 -1
  36. data/lib/fhcap/tasks/cluster/info.rb +1 -1
  37. data/lib/fhcap/tasks/cluster/provision.rb +3 -3
  38. data/lib/fhcap/tasks/cluster/status.rb +1 -1
  39. data/lib/fhcap/tasks/dns/create_record.rb +79 -0
  40. data/lib/fhcap/tasks/dns/delete_record.rb +55 -0
  41. data/lib/fhcap/tasks/dns/list.rb +37 -0
  42. data/lib/fhcap/tasks/dns/route53_helper.rb +48 -0
  43. data/lib/fhcap/tasks/knife/add.rb +43 -8
  44. data/lib/fhcap/tasks/repo/checkout.rb +1 -0
  45. data/lib/fhcap/tasks/task_base.rb +25 -0
  46. data/lib/fhcap/version.rb +1 -1
  47. data/spec/fhcap/tasks/dns/create_record_spec.rb +34 -0
  48. data/spec/fhcap/tasks/dns/delete_record_spec.rb +30 -0
  49. data/templates/chef/environment_core.json.erb +1 -1
  50. data/templates/cluster/aws/common.json.erb +1 -1
  51. data/templates/cluster/aws/core-small-9node.json.erb +3 -3
  52. data/templates/cluster/aws/single-blank.json.erb +2 -1
  53. data/templates/cluster/openstack/core-3node.json.erb +1 -1
  54. data/templates/cluster/openstack/core-small-9node.json.erb +4 -4
  55. data/templates/cluster/openstack/mbaas-3node.json.erb +2 -2
  56. data/templates/cluster/openstack/single-blank.json.erb +0 -1
  57. data/templates/init/knife_local.rb.erb +9 -0
  58. metadata +19 -4
  59. 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