dev-lxc 2.3.1 → 2.3.2

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.
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