fhcap-cli 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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