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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/dev-lxc/cli.rb +12 -1
- data/lib/dev-lxc/cluster.rb +46 -53
- data/lib/dev-lxc/container.rb +12 -4
- data/lib/dev-lxc/server.rb +3 -2
- data/lib/dev-lxc/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40dd4b60e8c40f13ccb53dcbdcf36acad7bad55b
|
4
|
+
data.tar.gz: bcd1bb65020fd82929f8616a306077a63f772de7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
418
|
+
get_cluster(options[:config]).destroy(server_name_regex)
|
408
419
|
print_elapsed_time(Time.now - start_time)
|
409
420
|
end
|
410
421
|
|
data/lib/dev-lxc/cluster.rb
CHANGED
@@ -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
|
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
|
-
|
624
|
-
|
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
|
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
|
641
|
-
if
|
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
|
637
|
+
configure_manage(server) if installed_products.include?('manage')
|
648
638
|
when 'chef-server'
|
649
|
-
if
|
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
|
665
|
-
configure_push_jobs_server(server) if
|
666
|
-
configure_manage(server) if
|
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
|
658
|
+
configure_compliance(server) if installed_products.include?('compliance')
|
669
659
|
when 'automate'
|
670
|
-
configure_automate(server) if
|
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
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
854
|
-
|
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
|
-
|
859
|
-
|
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
|
-
|
866
|
+
server.run_command("#{@server_configs[server.name][:chef_server_type]}-ctl reconfigure")
|
870
867
|
end
|
871
|
-
|
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
|
-
|
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
|
-
|
891
|
+
server.run_command("chef-compliance-ctl reconfigure")
|
895
892
|
admin_user = @server_configs[server.name][:admin_user]
|
896
893
|
if admin_user
|
897
|
-
|
898
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
1021
|
+
server.run_command("chef-server-ctl org-user-add #{org_add_user_string}")
|
1029
1022
|
end
|
1030
1023
|
end
|
1031
1024
|
|
data/lib/dev-lxc/container.rb
CHANGED
@@ -38,7 +38,7 @@ module DevLXC
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def destroy
|
41
|
-
|
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
|
-
|
95
|
-
|
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
|
|
data/lib/dev-lxc/server.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/dev-lxc/version.rb
CHANGED
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.
|
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
|
+
date: 2016-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|