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