dev-lxc 2.3.1 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 380d44e7d8a00e55126697a912e6137dfa5fdd07
4
- data.tar.gz: 51efc2c299e10e4ebd8df1e8ac2f0407ce122c72
3
+ metadata.gz: 40dd4b60e8c40f13ccb53dcbdcf36acad7bad55b
4
+ data.tar.gz: bcd1bb65020fd82929f8616a306077a63f772de7
5
5
  SHA512:
6
- metadata.gz: cb04423d93d681ea9830d5b11bb5ed3c4cbbc9f1dc5e9c3f85d91683b5110c0fa1d630a7bb8dfb9dbe9e26a0ced508c6675c9369405c122a4cce8e0cb733d28d
7
- data.tar.gz: f7ad42408a5123e111f622ba7c138af98c9e3c00d05e6b627aed85a8cde85e0ac35d49c673c3a5f203bc5922c1c02c4cdacccd270a1310088537d18f26648ae5
6
+ metadata.gz: 4e389110e949fae00632d8bd86a92f529764626697da1cff3704230fb66d66e57fe952624b2f312f64a57ca62fc31f35ffc0d2eb03739de414979ec1df4ff287
7
+ data.tar.gz: cab1987729070191604736ed69a216f92a837a331b36efd7cbb7bb04489fc0c7614544e20155298ed90810d68928569013816e190b7e71e052580f8e8e32bb5b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # dev-lxc Change Log
2
2
 
3
+ ## 2.3.2 (2016-12-02)
4
+
5
+ * Fix DevLXC::Cluster#configure_automate so the reconfigure comes after all changes to delivery.rb
6
+ * Add ability to save run_command output to a file
7
+ * Use delivery-ctl create-enterprise
8
+ * Replace run_ctl with simpler run_command
9
+ * Use installed_products instead of required_products in DevLXC::Cluster#configure_products
10
+ * Hard stop the server when destroying it
11
+ * Fix destroy so confirmation message works
12
+
3
13
  ## 2.3.1 (2016-11-28)
4
14
 
5
15
  * Create DevLXC::Cluster.abort_up to help with code clarity
data/lib/dev-lxc/cli.rb CHANGED
@@ -403,8 +403,19 @@ nodes:
403
403
  option :config, :desc => "Specify a cluster's YAML config file. `./dev-lxc.yml` will be used by default"
404
404
  option :force, :aliases => "-f", :type => :boolean, :desc => "Destroy servers without confirmation"
405
405
  def destroy(server_name_regex=nil)
406
+ servers = get_cluster(options[:config]).get_sorted_servers(server_name_regex)
407
+ if servers.empty?
408
+ puts "No matching server names were found"
409
+ exit
410
+ end
411
+ unless options[:force]
412
+ confirmation_string = String.new
413
+ servers.reverse_each { |s| confirmation_string += "#{s.name}\n" }
414
+ confirmation_string += "Are you sure you want to destroy these servers? (y/N)\n"
415
+ return unless yes?(confirmation_string)
416
+ end
406
417
  start_time = Time.now
407
- get_cluster(options[:config]).destroy(server_name_regex, options[:force])
418
+ get_cluster(options[:config]).destroy(server_name_regex)
408
419
  print_elapsed_time(Time.now - start_time)
409
420
  end
410
421
 
@@ -297,18 +297,8 @@ module DevLXC
297
297
  servers.select { |s| s.name =~ /#{server_name_regex}/ }
298
298
  end
299
299
 
300
- def destroy(server_name_regex=nil, force=false)
300
+ def destroy(server_name_regex=nil)
301
301
  servers = get_sorted_servers(server_name_regex)
302
- if servers.empty?
303
- puts "No matching server names were found"
304
- exit
305
- end
306
- unless force
307
- confirmation_string = String.new
308
- servers.reverse_each { |s| confirmation_string += "#{s.name}\n" }
309
- confirmation_string += "Are you sure you want to destroy these servers? (y/N)\n"
310
- return unless yes?(confirmation_string)
311
- end
312
302
  servers.reverse_each { |s| s.destroy; puts }
313
303
  delete_dns_records unless get_sorted_servers.any? { |s| s.container.state != :stopped }
314
304
  end
@@ -620,8 +610,8 @@ module DevLXC
620
610
  def configure_products(server)
621
611
  puts "Configuring container '#{server.name}'"
622
612
  server.start
623
- required_products = @server_configs[server.name][:required_products].keys if @server_configs[server.name][:required_products]
624
- required_products ||= Array.new
613
+ installed_products = @server_configs[server.name][:products].keys if @server_configs[server.name][:products]
614
+ installed_products ||= Array.new
625
615
  server_type = @server_configs[server.name][:server_type]
626
616
  dot_chef_path = "/root/chef-repo/.chef"
627
617
  case server_type
@@ -629,7 +619,7 @@ module DevLXC
629
619
  # Allow adhoc servers time to generate SSH Server Host Keys
630
620
  sleep 5
631
621
  when 'analytics'
632
- configure_analytics(server) if required_products.include?('analytics')
622
+ configure_analytics(server) if installed_products.include?('analytics')
633
623
  when 'build-nodes'
634
624
  sleep 5 # give time for DNS resolution to be available
635
625
  configure_build_node(server)
@@ -637,16 +627,16 @@ module DevLXC
637
627
  sleep 5 # give time for DNS resolution to be available
638
628
  configure_runner(server)
639
629
  when 'chef-backend'
640
- configure_chef_backend(server) if required_products.include?('chef-backend')
641
- if required_products.include?('chef-server')
630
+ configure_chef_backend(server) if installed_products.include?('chef-backend')
631
+ if installed_products.include?('chef-server')
642
632
  configure_chef_frontend(server)
643
633
  if server.name == @config['chef-backend'][:bootstrap_frontend]
644
634
  create_users_orgs_knife_configs(server, dot_chef_path)
645
635
  end
646
636
  end
647
- configure_manage(server) if required_products.include?('manage')
637
+ configure_manage(server) if installed_products.include?('manage')
648
638
  when 'chef-server'
649
- if required_products.include?('chef-server') || required_products.include?('private-chef')
639
+ if installed_products.include?('chef-server') || installed_products.include?('private-chef')
650
640
  configure_chef_server(server)
651
641
  if server.name == @config['chef-server'][:bootstrap_backend]
652
642
  create_users_orgs_knife_configs(server, dot_chef_path)
@@ -661,19 +651,19 @@ module DevLXC
661
651
  end
662
652
  end
663
653
  end
664
- configure_reporting(server) if required_products.include?('reporting')
665
- configure_push_jobs_server(server) if required_products.include?('push-jobs-server')
666
- configure_manage(server) if required_products.include?('manage')
654
+ configure_reporting(server) if installed_products.include?('reporting')
655
+ configure_push_jobs_server(server) if installed_products.include?('push-jobs-server')
656
+ configure_manage(server) if installed_products.include?('manage')
667
657
  when 'compliance'
668
- configure_compliance(server) if required_products.include?('compliance')
658
+ configure_compliance(server) if installed_products.include?('compliance')
669
659
  when 'automate'
670
- configure_automate(server) if required_products.include?('delivery')
660
+ configure_automate(server) if installed_products.include?('delivery')
671
661
  when 'nodes'
672
662
  # Allow servers time to generate SSH Server Host Keys
673
663
  sleep 5
674
- configure_chef_client(server, dot_chef_path) if required_products.include?('chef') || required_products.include?('chefdk')
664
+ configure_chef_client(server, dot_chef_path) if installed_products.include?('chef') || installed_products.include?('chefdk')
675
665
  when 'supermarket'
676
- configure_supermarket(server) if required_products.include?('supermarket')
666
+ configure_supermarket(server) if installed_products.include?('supermarket')
677
667
  end
678
668
  end
679
669
 
@@ -698,11 +688,18 @@ module DevLXC
698
688
  setup_cmd += " --supermarket-fqdn #{supermarket_fqdn}" if supermarket_fqdn
699
689
  setup_cmd += " --enterprise #{enterprise_name}"
700
690
  setup_cmd += " --no-build-node"
701
- setup_cmd += " --configure"
702
- run_ctl(server, "delivery", setup_cmd)
691
+ setup_cmd += " --no-configure"
692
+ server.run_command("delivery-ctl #{setup_cmd}")
703
693
 
704
694
  # enable Compliance profiles asset store
705
- DevLXC::append_line_to_file("#{server.container.config_item('lxc.rootfs')}/etc/delivery/delivery.rb", "compliance_profiles['enable'] = true")
695
+ DevLXC::append_line_to_file("#{server.container.config_item('lxc.rootfs')}/etc/delivery/delivery.rb", "compliance_profiles['enable'] = true\n")
696
+
697
+ server.run_command("delivery-ctl reconfigure")
698
+
699
+ # give time for all services to come up completely
700
+ sleep 10
701
+
702
+ server.run_command("delivery-ctl create-enterprise #{enterprise_name} --ssh-pub-key-file /etc/delivery/builder_key.pub", "#{server.container.config_item('lxc.rootfs')}/etc/delivery/#{enterprise_name}-admin-credentials")
706
703
  end
707
704
 
708
705
  def print_automate_credentials
@@ -730,7 +727,7 @@ module DevLXC
730
727
  install_build_node_cmd += " --password dev-lxc"
731
728
  install_build_node_cmd += " --installer #{@server_configs[server.name][:required_products]["chefdk"]}"
732
729
  install_build_node_cmd += " --overwrite-registration"
733
- run_ctl(automate_server, "delivery", install_build_node_cmd)
730
+ automate_server.run_command("delivery-ctl #{install_build_node_cmd}")
734
731
  end
735
732
  end
736
733
 
@@ -742,7 +739,7 @@ module DevLXC
742
739
  install_runner_cmd += " --password dev-lxc"
743
740
  install_runner_cmd += " --installer #{@server_configs[server.name][:required_products]["chefdk"]}"
744
741
  install_runner_cmd += " --yes"
745
- run_ctl(automate_server, "delivery", install_runner_cmd)
742
+ automate_server.run_command("delivery-ctl #{install_runner_cmd}")
746
743
  end
747
744
  end
748
745
 
@@ -793,13 +790,13 @@ ssl_verify_mode :verify_none
793
790
  FileUtils.mkdir_p("#{server.container.config_item('lxc.rootfs')}/etc/chef-backend")
794
791
  chef_backend_config = "publish_address '#{@server_configs[server.name][:ipaddress]}'\n"
795
792
  IO.write("#{server.container.config_item('lxc.rootfs')}/etc/chef-backend/chef-backend.rb", chef_backend_config)
796
- run_ctl(server, "chef-backend", "bootstrap --yes")
793
+ server.run_command("chef-backend-ctl bootstrap --yes")
797
794
  else
798
795
  puts "Joining #{server.name} to the chef-backend cluster"
799
796
  leader_backend = get_server(@config['chef-backend'][:leader_backend])
800
797
  FileUtils.cp("#{leader_backend.container.config_item('lxc.rootfs')}/etc/chef-backend/chef-backend-secrets.json",
801
798
  "#{server.container.config_item('lxc.rootfs')}/root/")
802
- run_ctl(server, "chef-backend", "join-cluster #{@server_configs[leader_backend.name][:ipaddress]} -p #{@server_configs[server.name][:ipaddress]} -s /root/chef-backend-secrets.json --yes")
799
+ server.run_command("chef-backend-ctl join-cluster #{@server_configs[leader_backend.name][:ipaddress]} -p #{@server_configs[server.name][:ipaddress]} -s /root/chef-backend-secrets.json --yes")
803
800
  end
804
801
  end
805
802
 
@@ -807,7 +804,7 @@ ssl_verify_mode :verify_none
807
804
  puts "Creating /etc/opscode/chef-server.rb"
808
805
  FileUtils.mkdir_p("#{server.container.config_item('lxc.rootfs')}/etc/opscode")
809
806
  leader_backend = get_server(@config['chef-backend'][:leader_backend])
810
- run_ctl(leader_backend, "chef-backend", "gen-server-config #{server.name} --filename /tmp/#{server.name}.rb")
807
+ leader_backend.run_command("chef-backend-ctl gen-server-config #{server.name} --filename /tmp/#{server.name}.rb")
811
808
  FileUtils.cp("#{leader_backend.container.config_item('lxc.rootfs')}/tmp/#{server.name}.rb",
812
809
  "#{server.container.config_item('lxc.rootfs')}/etc/opscode/chef-server.rb")
813
810
  unless server.name == @config['chef-backend'][:bootstrap_frontend]
@@ -819,7 +816,7 @@ ssl_verify_mode :verify_none
819
816
  FileUtils.cp("#{bootstrap_frontend.container.config_item('lxc.rootfs')}/etc/opscode/pivotal.pem",
820
817
  "#{server.container.config_item('lxc.rootfs')}/etc/opscode/")
821
818
  end
822
- run_ctl(server, "chef-server", "reconfigure")
819
+ server.run_command("chef-server-ctl reconfigure")
823
820
  end
824
821
 
825
822
  def configure_chef_server(server)
@@ -839,7 +836,7 @@ ssl_verify_mode :verify_none
839
836
  FileUtils.cp_r("#{get_server(@config['chef-server'][:bootstrap_backend]).container.config_item('lxc.rootfs')}/etc/opscode",
840
837
  "#{server.container.config_item('lxc.rootfs')}/etc", preserve: true)
841
838
  end
842
- run_ctl(server, @server_configs[server.name][:chef_server_type], "reconfigure")
839
+ server.run_command("#{@server_configs[server.name][:chef_server_type]}-ctl reconfigure")
843
840
  end
844
841
 
845
842
  def configure_reporting(server)
@@ -850,13 +847,13 @@ ssl_verify_mode :verify_none
850
847
  FileUtils.cp_r("#{get_server(@config['chef-server'][:bootstrap_backend]).container.config_item('lxc.rootfs')}/etc/opscode-reporting",
851
848
  "#{server.container.config_item('lxc.rootfs')}/etc", preserve: true)
852
849
  end
853
- run_ctl(server, @server_configs[server.name][:chef_server_type], "reconfigure")
854
- run_ctl(server, "opscode-reporting", "reconfigure")
850
+ server.run_command("#{@server_configs[server.name][:chef_server_type]}-ctl reconfigure")
851
+ server.run_command("opscode-reporting-ctl reconfigure")
855
852
  end
856
853
 
857
854
  def configure_push_jobs_server(server)
858
- run_ctl(server, "opscode-push-jobs-server", "reconfigure")
859
- run_ctl(server, @server_configs[server.name][:chef_server_type], "reconfigure")
855
+ server.run_command("opscode-push-jobs-server-ctl reconfigure")
856
+ server.run_command("#{@server_configs[server.name][:chef_server_type]}-ctl reconfigure")
860
857
  end
861
858
 
862
859
  def configure_manage(server)
@@ -866,9 +863,9 @@ ssl_verify_mode :verify_none
866
863
  puts "Disabling old opscode-webui in /etc/opscode/private-chef.rb"
867
864
  DevLXC.search_file_delete_line("#{server.container.config_item('lxc.rootfs')}/etc/opscode/private-chef.rb", /opscode_webui[.enable.]/)
868
865
  DevLXC.append_line_to_file("#{server.container.config_item('lxc.rootfs')}/etc/opscode/private-chef.rb", "\nopscode_webui['enable'] = false\n")
869
- run_ctl(server, @server_configs[server.name][:chef_server_type], "reconfigure")
866
+ server.run_command("#{@server_configs[server.name][:chef_server_type]}-ctl reconfigure")
870
867
  end
871
- run_ctl(server, "opscode-manage", "reconfigure")
868
+ server.run_command("opscode-manage-ctl reconfigure")
872
869
  end
873
870
 
874
871
  def configure_analytics(server)
@@ -885,17 +882,17 @@ ssl_verify_mode :verify_none
885
882
  FileUtils.cp_r("#{get_server(@config['analytics'][:bootstrap_backend]).container.config_item('lxc.rootfs')}/etc/opscode-analytics",
886
883
  "#{server.container.config_item('lxc.rootfs')}/etc", preserve: true)
887
884
  end
888
- run_ctl(server, "opscode-analytics", "reconfigure")
885
+ server.run_command("opscode-analytics-ctl reconfigure")
889
886
  end
890
887
 
891
888
  def configure_compliance(server)
892
889
  FileUtils.mkdir_p("#{server.container.config_item('lxc.rootfs')}/var/opt/chef-compliance")
893
890
  FileUtils.touch("#{server.container.config_item('lxc.rootfs')}/var/opt/chef-compliance/.license.accepted")
894
- run_ctl(server, "chef-compliance", "reconfigure")
891
+ server.run_command("chef-compliance-ctl reconfigure")
895
892
  admin_user = @server_configs[server.name][:admin_user]
896
893
  if admin_user
897
- run_ctl(server, "chef-compliance", "user-create #{admin_user} #{admin_user}")
898
- run_ctl(server, "chef-compliance", "restart core")
894
+ server.run_command("chef-compliance-ctl user-create #{admin_user} #{admin_user}")
895
+ server.run_command("chef-compliance-ctl restart core")
899
896
  end
900
897
  end
901
898
 
@@ -911,11 +908,7 @@ ssl_verify_mode :verify_none
911
908
  FileUtils.mkdir_p("#{server.container.config_item('lxc.rootfs')}/etc/supermarket")
912
909
  IO.write("#{server.container.config_item('lxc.rootfs')}/etc/supermarket/supermarket.json", JSON.pretty_generate(supermarket_config))
913
910
  end
914
- run_ctl(server, "supermarket", "reconfigure")
915
- end
916
-
917
- def run_ctl(server, component, subcommand)
918
- server.run_command("#{component}-ctl #{subcommand}")
911
+ server.run_command("supermarket-ctl reconfigure")
919
912
  end
920
913
 
921
914
  def create_users_orgs_knife_configs(server, dot_chef_path)
@@ -1004,7 +997,7 @@ ssl_verify_mode :verify_none
1004
997
  when 'private-chef'
1005
998
  server.run_command("/opt/opscode/embedded/bin/knife opc user create #{create_user_string} -c #{dot_chef_path}/pivotal.rb")
1006
999
  when 'chef-server'
1007
- run_ctl(server, "chef-server", "user-create #{create_user_string}")
1000
+ server.run_command("chef-server-ctl user-create #{create_user_string}")
1008
1001
  end
1009
1002
  end
1010
1003
 
@@ -1014,7 +1007,7 @@ ssl_verify_mode :verify_none
1014
1007
  when 'private-chef'
1015
1008
  server.run_command("/opt/opscode/embedded/bin/knife opc org create #{create_org_string} -c #{dot_chef_path}/pivotal.rb")
1016
1009
  when 'chef-server'
1017
- run_ctl(server, "chef-server", "org-create #{create_org_string}")
1010
+ server.run_command("chef-server-ctl org-create #{create_org_string}")
1018
1011
  end
1019
1012
  end
1020
1013
 
@@ -1025,7 +1018,7 @@ ssl_verify_mode :verify_none
1025
1018
  when 'private-chef'
1026
1019
  server.run_command("/opt/opscode/embedded/bin/knife opc org user add #{org_add_user_string} -c #{dot_chef_path}/pivotal.rb")
1027
1020
  when 'chef-server'
1028
- run_ctl(server, "chef-server", "org-user-add #{org_add_user_string}")
1021
+ server.run_command("chef-server-ctl org-user-add #{org_add_user_string}")
1029
1022
  end
1030
1023
  end
1031
1024
 
@@ -38,7 +38,7 @@ module DevLXC
38
38
  end
39
39
 
40
40
  def destroy
41
- shutdown if running?
41
+ stop if running?
42
42
  puts "Destroying container '#{self.name}'"
43
43
  super if self.defined?
44
44
  end
@@ -85,14 +85,22 @@ module DevLXC
85
85
  IO.write("#{config_item('lxc.rootfs')}#{dot_ssh_path}/authorized_keys", authorized_keys_content)
86
86
  end
87
87
 
88
- def run_command(command)
88
+ def run_command(command, output_file=nil)
89
89
  unless running?
90
90
  puts "ERROR: Container '#{self.name}' must be running first"
91
91
  exit 1
92
92
  end
93
93
  attach_opts = { wait: true, env_policy: LXC::LXC_ATTACH_CLEAR_ENV, extra_env_vars: ['HOME=/root'] }
94
- attach(attach_opts) do
95
- LXC.run_command(command)
94
+ if output_file
95
+ file = File.open(output_file, 'w+')
96
+ attach_opts[:stdout] = file
97
+ end
98
+ begin
99
+ attach(attach_opts) do
100
+ LXC.run_command(command)
101
+ end
102
+ ensure
103
+ file.close if file
96
104
  end
97
105
  end
98
106
 
@@ -21,10 +21,11 @@ module DevLXC
21
21
  @container.status
22
22
  end
23
23
 
24
- def run_command(command)
24
+ def run_command(command, output_file=nil)
25
25
  if @container.running?
26
26
  puts "Running '#{command}' in '#{@container.name}'"
27
- @container.run_command(command)
27
+ puts "Saving output to #{output_file}" if output_file
28
+ @container.run_command(command, output_file)
28
29
  else
29
30
  puts "'#{@container.name}' is not running"
30
31
  end
@@ -1,3 +1,3 @@
1
1
  module DevLXC
2
- VERSION = "2.3.1"
2
+ VERSION = "2.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev-lxc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremiah Snapp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-28 00:00:00.000000000 Z
11
+ date: 2016-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler