simp-cli 1.0.12

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 (150) hide show
  1. checksums.yaml +15 -0
  2. data/LICENSE +27 -0
  3. data/README.md +48 -0
  4. data/Rakefile +142 -0
  5. data/bin/simp +5 -0
  6. data/lib/simp/cli.rb +88 -0
  7. data/lib/simp/cli/commands/bootstrap.rb +275 -0
  8. data/lib/simp/cli/commands/check.rb +163 -0
  9. data/lib/simp/cli/commands/cleancerts.rb +114 -0
  10. data/lib/simp/cli/commands/config.rb +235 -0
  11. data/lib/simp/cli/commands/doc.rb +14 -0
  12. data/lib/simp/cli/commands/passgen.rb +128 -0
  13. data/lib/simp/cli/commands/puppeteval.rb +82 -0
  14. data/lib/simp/cli/commands/runpuppet.rb +95 -0
  15. data/lib/simp/cli/config/item.rb +456 -0
  16. data/lib/simp/cli/config/item/add_ldap_to_hiera.rb +43 -0
  17. data/lib/simp/cli/config/item/answers_yaml_file_writer.rb +58 -0
  18. data/lib/simp/cli/config/item/certificates.rb +39 -0
  19. data/lib/simp/cli/config/item/client_nets.rb +65 -0
  20. data/lib/simp/cli/config/item/common_runlevel_default.rb +32 -0
  21. data/lib/simp/cli/config/item/dns_search.rb +48 -0
  22. data/lib/simp/cli/config/item/dns_servers.rb +57 -0
  23. data/lib/simp/cli/config/item/failover_log_servers.rb +27 -0
  24. data/lib/simp/cli/config/item/gateway.rb +32 -0
  25. data/lib/simp/cli/config/item/grub_password.rb +51 -0
  26. data/lib/simp/cli/config/item/hostname.rb +24 -0
  27. data/lib/simp/cli/config/item/hostname_conf.rb +48 -0
  28. data/lib/simp/cli/config/item/ipaddress.rb +46 -0
  29. data/lib/simp/cli/config/item/is_master_yum_server.rb +23 -0
  30. data/lib/simp/cli/config/item/ldap_base_dn.rb +38 -0
  31. data/lib/simp/cli/config/item/ldap_bind_dn.rb +34 -0
  32. data/lib/simp/cli/config/item/ldap_bind_hash.rb +28 -0
  33. data/lib/simp/cli/config/item/ldap_bind_pw.rb +24 -0
  34. data/lib/simp/cli/config/item/ldap_master.rb +33 -0
  35. data/lib/simp/cli/config/item/ldap_root_dn.rb +42 -0
  36. data/lib/simp/cli/config/item/ldap_root_hash.rb +35 -0
  37. data/lib/simp/cli/config/item/ldap_sync_dn.rb +24 -0
  38. data/lib/simp/cli/config/item/ldap_sync_hash.rb +28 -0
  39. data/lib/simp/cli/config/item/ldap_sync_pw.rb +26 -0
  40. data/lib/simp/cli/config/item/ldap_uri.rb +43 -0
  41. data/lib/simp/cli/config/item/log_servers.rb +27 -0
  42. data/lib/simp/cli/config/item/netmask.rb +39 -0
  43. data/lib/simp/cli/config/item/network_conf.rb +63 -0
  44. data/lib/simp/cli/config/item/network_dhcp.rb +27 -0
  45. data/lib/simp/cli/config/item/network_interface.rb +41 -0
  46. data/lib/simp/cli/config/item/network_setup_nic.rb +28 -0
  47. data/lib/simp/cli/config/item/ntp_servers.rb +69 -0
  48. data/lib/simp/cli/config/item/puppet_autosign.rb +66 -0
  49. data/lib/simp/cli/config/item/puppet_ca.rb +31 -0
  50. data/lib/simp/cli/config/item/puppet_ca_port.rb +28 -0
  51. data/lib/simp/cli/config/item/puppet_conf.rb +98 -0
  52. data/lib/simp/cli/config/item/puppet_fileserver.rb +104 -0
  53. data/lib/simp/cli/config/item/puppet_hosts_entry.rb +44 -0
  54. data/lib/simp/cli/config/item/puppet_server.rb +30 -0
  55. data/lib/simp/cli/config/item/puppet_server_ip.rb +25 -0
  56. data/lib/simp/cli/config/item/puppetdb_port.rb +25 -0
  57. data/lib/simp/cli/config/item/puppetdb_server.rb +26 -0
  58. data/lib/simp/cli/config/item/remove_ldap_from_hiera.rb +47 -0
  59. data/lib/simp/cli/config/item/rename_fqdn_yaml.rb +40 -0
  60. data/lib/simp/cli/config/item/rsync_base.rb +37 -0
  61. data/lib/simp/cli/config/item/rsync_server.rb +44 -0
  62. data/lib/simp/cli/config/item/rsync_timeout.rb +26 -0
  63. data/lib/simp/cli/config/item/set_grub_password.rb +19 -0
  64. data/lib/simp/cli/config/item/simp_yum_servers.rb +30 -0
  65. data/lib/simp/cli/config/item/use_auditd.rb +19 -0
  66. data/lib/simp/cli/config/item/use_fips.rb +46 -0
  67. data/lib/simp/cli/config/item/use_iptables.rb +22 -0
  68. data/lib/simp/cli/config/item/use_ldap.rb +19 -0
  69. data/lib/simp/cli/config/item/use_selinux.rb +32 -0
  70. data/lib/simp/cli/config/item/yum_repositories.rb +75 -0
  71. data/lib/simp/cli/config/item_list_factory.rb +236 -0
  72. data/lib/simp/cli/config/questionnaire.rb +86 -0
  73. data/lib/simp/cli/config/utils.rb +128 -0
  74. data/lib/simp/cli/lib/utils.rb +114 -0
  75. data/lib/simp/simp.rb +77 -0
  76. data/spec/lib/simp/cli/commands/config_spec.rb +42 -0
  77. data/spec/lib/simp/cli/config/item/add_ldap_to_hiera_spec.rb +58 -0
  78. data/spec/lib/simp/cli/config/item/answers_yaml_file_writer_spec.rb +86 -0
  79. data/spec/lib/simp/cli/config/item/certificates_spec.rb +50 -0
  80. data/spec/lib/simp/cli/config/item/client_nets_spec.rb +66 -0
  81. data/spec/lib/simp/cli/config/item/common_runlevel_default_spec.rb +27 -0
  82. data/spec/lib/simp/cli/config/item/dns_search_spec.rb +74 -0
  83. data/spec/lib/simp/cli/config/item/dns_servers_spec.rb +76 -0
  84. data/spec/lib/simp/cli/config/item/failover_log_servers_spec.rb +49 -0
  85. data/spec/lib/simp/cli/config/item/files/FakeCA/cacertkey +1 -0
  86. data/spec/lib/simp/cli/config/item/files/FakeCA/gencerts_nopass.sh +10 -0
  87. data/spec/lib/simp/cli/config/item/files/autosign.conf.new +11 -0
  88. data/spec/lib/simp/cli/config/item/files/autosign.conf.used +15 -0
  89. data/spec/lib/simp/cli/config/item/files/fileserver.conf +41 -0
  90. data/spec/lib/simp/cli/config/item/files/hosts +2 -0
  91. data/spec/lib/simp/cli/config/item/files/hosts.old_puppet_entry +3 -0
  92. data/spec/lib/simp/cli/config/item/files/puppet.conf +25 -0
  93. data/spec/lib/simp/cli/config/item/files/puppet.your.domain.yaml +21 -0
  94. data/spec/lib/simp/cli/config/item/files/resolv.conf__multiple +10 -0
  95. data/spec/lib/simp/cli/config/item/files/resolv.conf__single +4 -0
  96. data/spec/lib/simp/cli/config/item/files/rsyncd.conf +225 -0
  97. data/spec/lib/simp/cli/config/item/gateway_spec.rb +23 -0
  98. data/spec/lib/simp/cli/config/item/grub_password_spec.rb +24 -0
  99. data/spec/lib/simp/cli/config/item/hostname_conf_spec.rb +27 -0
  100. data/spec/lib/simp/cli/config/item/hostname_spec.rb +22 -0
  101. data/spec/lib/simp/cli/config/item/ipaddress_spec.rb +40 -0
  102. data/spec/lib/simp/cli/config/item/is_master_yum_server_spec.rb +29 -0
  103. data/spec/lib/simp/cli/config/item/ldap_base_dn_spec.rb +23 -0
  104. data/spec/lib/simp/cli/config/item/ldap_bind_dn_spec.rb +23 -0
  105. data/spec/lib/simp/cli/config/item/ldap_bind_hash_spec.rb +23 -0
  106. data/spec/lib/simp/cli/config/item/ldap_bind_pw_spec.rb +21 -0
  107. data/spec/lib/simp/cli/config/item/ldap_master_spec.rb +37 -0
  108. data/spec/lib/simp/cli/config/item/ldap_root_dn_spec.rb +23 -0
  109. data/spec/lib/simp/cli/config/item/ldap_root_hash_spec.rb +23 -0
  110. data/spec/lib/simp/cli/config/item/ldap_sync_dn_spec.rb +22 -0
  111. data/spec/lib/simp/cli/config/item/ldap_sync_hash_spec.rb +23 -0
  112. data/spec/lib/simp/cli/config/item/ldap_sync_pw_spec.rb +21 -0
  113. data/spec/lib/simp/cli/config/item/ldap_uri_spec.rb +32 -0
  114. data/spec/lib/simp/cli/config/item/log_servers_spec.rb +49 -0
  115. data/spec/lib/simp/cli/config/item/netmask_spec.rb +28 -0
  116. data/spec/lib/simp/cli/config/item/network_conf_spec.rb +63 -0
  117. data/spec/lib/simp/cli/config/item/network_dhcp_spec.rb +11 -0
  118. data/spec/lib/simp/cli/config/item/network_interface_spec.rb +26 -0
  119. data/spec/lib/simp/cli/config/item/network_setup_nic_spec.rb +29 -0
  120. data/spec/lib/simp/cli/config/item/ntp_servers_spec.rb +43 -0
  121. data/spec/lib/simp/cli/config/item/puppet_autosign_spec.rb +55 -0
  122. data/spec/lib/simp/cli/config/item/puppet_ca_port_spec.rb +23 -0
  123. data/spec/lib/simp/cli/config/item/puppet_ca_spec.rb +22 -0
  124. data/spec/lib/simp/cli/config/item/puppet_conf_spec.rb +110 -0
  125. data/spec/lib/simp/cli/config/item/puppet_fileserver_spec.rb +53 -0
  126. data/spec/lib/simp/cli/config/item/puppet_hosts_entry_spec.rb +85 -0
  127. data/spec/lib/simp/cli/config/item/puppet_server_ip_spec.rb +24 -0
  128. data/spec/lib/simp/cli/config/item/puppet_server_spec.rb +22 -0
  129. data/spec/lib/simp/cli/config/item/puppetdb_port_spec.rb +25 -0
  130. data/spec/lib/simp/cli/config/item/puppetdb_server_spec.rb +25 -0
  131. data/spec/lib/simp/cli/config/item/remove_ldap_from_hiera_spec.rb +58 -0
  132. data/spec/lib/simp/cli/config/item/rename_fqdn_yaml_spec.rb +63 -0
  133. data/spec/lib/simp/cli/config/item/rsync_base_spec.rb +28 -0
  134. data/spec/lib/simp/cli/config/item/rsync_server_spec.rb +41 -0
  135. data/spec/lib/simp/cli/config/item/rsync_timeout_spec.rb +21 -0
  136. data/spec/lib/simp/cli/config/item/set_grub_password_spec.rb +29 -0
  137. data/spec/lib/simp/cli/config/item/simp_yum_servers_spec.rb +41 -0
  138. data/spec/lib/simp/cli/config/item/spec_helper.rb +22 -0
  139. data/spec/lib/simp/cli/config/item/use_auditd_spec.rb +29 -0
  140. data/spec/lib/simp/cli/config/item/use_fips_spec.rb +29 -0
  141. data/spec/lib/simp/cli/config/item/use_iptables_spec.rb +29 -0
  142. data/spec/lib/simp/cli/config/item/use_ldap_spec.rb +29 -0
  143. data/spec/lib/simp/cli/config/item/use_selinux_spec.rb +24 -0
  144. data/spec/lib/simp/cli/config/item/yum_repositories_spec.rb +94 -0
  145. data/spec/lib/simp/cli/config/item_spec.rb +106 -0
  146. data/spec/lib/simp/cli/config/spec_helper.rb +1 -0
  147. data/spec/lib/simp/cli/config/utils_spec.rb +131 -0
  148. data/spec/lib/simp/cli/spec_helper.rb +1 -0
  149. data/spec/spec_helper.rb +91 -0
  150. metadata +391 -0
@@ -0,0 +1,24 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::Hostname < Item
9
+ def initialize
10
+ super
11
+ @key = 'hostname'
12
+ @description = %q{The FQDN of the system.}
13
+ @fact = 'fqdn'
14
+ end
15
+
16
+ def validate( x )
17
+ Simp::Cli::Config::Utils.validate_fqdn x
18
+ end
19
+
20
+ def recommended_value
21
+ validate( os_value ) ? os_value : 'puppet.change.me'
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,48 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::HostnameConf < ActionItem
9
+ def initialize
10
+ super
11
+ @key = 'hostname::conf'
12
+ @description = 'action item; configures hostname'
13
+ @die_on_apply_fail = true
14
+ end
15
+
16
+ def apply
17
+ success = true
18
+ fqdn = @config_items.fetch( 'hostname' ).value
19
+ # TODO: should we use this shortname instead of fqdn?
20
+ hostname = fqdn.split('.').first
21
+
22
+ # copy/pasta'd logic from old simp config
23
+ # TODO: replace this with 'puppet apply' + network::global
24
+ say_green ' updating hostname...' if !@silent
25
+
26
+ `hostname #{fqdn}`
27
+ success = success && $?.success?
28
+
29
+ `sed -i '/HOSTNAME/d' /etc/sysconfig/network`
30
+ success = success && $?.success?
31
+
32
+ `echo HOSTNAME=#{fqdn} >> /etc/sysconfig/network`
33
+ success = success && $?.success?
34
+
35
+ # For EL 7 / systemd
36
+ if File.exist?('/etc/hostname')
37
+ say_green ' updating /etc/hostname...'
38
+ File.open('/etc/hostname','w'){|fh| fh.puts(fqdn)}
39
+
40
+ # hostnamectl is required to persist the change under systemd
41
+ `hostnamectl --static --pretty set-hostname #{fqdn}`
42
+ success = success && $?.success?
43
+ end
44
+
45
+ success
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,46 @@
1
+ require File.expand_path( '../item', File.dirname(__FILE__) )
2
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
3
+
4
+ module Simp; end
5
+ class Simp::Cli; end
6
+ module Simp::Cli::Config
7
+ class Item::IPAddress < Item
8
+ def initialize
9
+ super
10
+ @key = 'ipaddress'
11
+ @description = 'The IP address of this system'
12
+ @__warning = false
13
+ end
14
+
15
+
16
+ # TODO: comment upon the hell-logic below
17
+ # Config::Items are happiest when @fact if set and Facter returns a value
18
+ #
19
+ # But any Item that relies on the value of interface has a problem
20
+ # in that facter can't know which ipaddress_* fact to query until the value
21
+ # of interface is known.
22
+ def os_value
23
+ ip = nil
24
+ nic = @config_items.fetch( 'network::interface' ).value
25
+ if nic || @fact
26
+ @fact = @fact || "ipaddress_#{nic}"
27
+ ip = super
28
+ if ip.nil? and !@__warning
29
+ warning = "WARNING: #{@key}: No IP Address found for NIC #{nic}"
30
+ say "<%= color(%q{#{warning}}, YELLOW) %>\n"
31
+ @__warning = true
32
+ end
33
+ end
34
+ ip
35
+ end
36
+
37
+
38
+ # Always recommend the configured IP
39
+ def recommended_value; os_value; end
40
+
41
+
42
+ def validate( x )
43
+ Simp::Cli::Config::Utils.validate_ip x
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,23 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::IsMasterYumServer < YesNoItem
9
+ def initialize
10
+ super
11
+ @key = 'is_master_yum_server'
12
+ @description = %q{Is the master also used as a YUM server?
13
+
14
+ This option should be yes if the Puppet master (this system) will also act as a
15
+ YUM server.
16
+ }
17
+ end
18
+
19
+ def recommended_value
20
+ 'yes'
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,38 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapBaseDn < Item
9
+ def initialize
10
+ super
11
+ @key = 'ldap::base_dn'
12
+ @description = %Q{The Base DN of the LDAP server}
13
+ end
14
+
15
+
16
+ def os_value
17
+ # TODO: turn into custom fact?
18
+ result = nil
19
+ if File.readable?('/etc/openldap/ldap.conf') &&
20
+ `grep BASE /etc/openldap/ldap.conf` =~ /^\s*BASE\s+(\S+)\s*/
21
+ result = $1
22
+ end
23
+ result
24
+ end
25
+
26
+
27
+ def recommended_value
28
+ if item = @config_items.fetch( 'hostname', nil )
29
+ item.value.split('.')[1..-1].map{ |domain| "dc=#{domain}" }.join(',')
30
+ end
31
+ end
32
+
33
+
34
+ def validate( x )
35
+ (x.to_s =~ /^dc=/) ? true : false
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,34 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapBindDn < Item
9
+ def initialize
10
+ super
11
+ @key = 'ldap::bind_dn'
12
+ @description = %Q{LDAP Bind Distinguished Name}
13
+ end
14
+
15
+
16
+ def os_value
17
+ # TODO: turn into custom fact?
18
+ if File.readable?('/etc/openldap/ldap.conf') &&
19
+ `grep BINDDN /etc/openldap/ldap.conf` =~ /\ABINDDN\s+(\S+)\s*/
20
+ $1
21
+ end
22
+ end
23
+
24
+
25
+ def validate( x )
26
+ (x.to_s =~ /^cn=/) ? true : false
27
+ end
28
+
29
+
30
+ def recommended_value
31
+ "cn=hostAuth,ou=Hosts,%{hiera('ldap::base_dn')}"
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,28 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapBindHash < Item
9
+ def initialize
10
+ super
11
+ @key = 'ldap::bind_hash'
12
+ @description = %Q{The salted LDAP bind password hash}
13
+ @skip_query = true
14
+ end
15
+
16
+ def recommended_value
17
+ encrypt( @config_items.fetch( 'ldap::bind_pw' ).value )
18
+ end
19
+
20
+ def encrypt( string, salt=nil )
21
+ Simp::Cli::Config::Utils.encrypt_openldap_hash( string, salt )
22
+ end
23
+
24
+ def validate( x )
25
+ Simp::Cli::Config::Utils.validate_openldap_hash( x )
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path( '../item', File.dirname(__FILE__) )
2
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
3
+
4
+ module Simp; end
5
+ class Simp::Cli; end
6
+
7
+ module Simp::Cli::Config
8
+ class Item::LdapBindPw < PasswordItem
9
+ def initialize
10
+ super
11
+ @key = 'ldap::bind_pw'
12
+ @description = %Q{The LDAP bind password}
13
+ end
14
+
15
+ def validate string
16
+ !string.to_s.strip.empty? && super
17
+ end
18
+
19
+ # LDAP Bind PW must known and stored in cleartext
20
+ def encrypt string
21
+ string
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ require "resolv"
2
+ require 'highline/import'
3
+ require File.expand_path( '../item', File.dirname(__FILE__) )
4
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
5
+
6
+ module Simp; end
7
+ class Simp::Cli; end
8
+ module Simp::Cli::Config
9
+ class Item::LdapMaster < Item
10
+ def initialize
11
+ super
12
+ @key = 'ldap::master'
13
+ @description = %Q{This is the LDAP master in URI form (ldap://server)}
14
+ end
15
+
16
+ def recommended_value
17
+ if item = @config_items.fetch( 'hostname', nil )
18
+ "ldap://#{item.value}"
19
+ end
20
+ end
21
+
22
+ def validate item
23
+ result = false
24
+ if ( item =~ %r{^ldap://.+} ) ? true : false
25
+ i = item.sub( %r{^ldap://}, '' )
26
+ result = ( Simp::Cli::Config::Utils.validate_hostname( i ) ||
27
+ Simp::Cli::Config::Utils.validate_fqdn( i ) ||
28
+ Simp::Cli::Config::Utils.validate_ip( i ) )
29
+ end
30
+ result
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,42 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapRootDn < Item
9
+ def initialize
10
+ super
11
+ @key = 'ldap::root_dn'
12
+ @description = %Q{The LDAP root DN.}
13
+
14
+ end
15
+
16
+
17
+ def os_value
18
+ # TODO: turn into custom fact?
19
+ result = nil
20
+ if File.readable?('/etc/openldap/ldap.conf') &&
21
+ `grep rootdn /etc/openldap/slapd.conf` =~ /\Arootdn\s+[\"](.*)[\"]\s*/
22
+ result = $1
23
+ end
24
+ result
25
+ end
26
+
27
+ def os_value
28
+ if File.readable?('/etc/openldap/slapd.conf')
29
+ `grep rootdn /etc/openldap/slapd.conf` =~ /\Arootdn\s+[\"](.*)[\"]\s*/
30
+ $1
31
+ end
32
+ end
33
+
34
+ def recommended_value
35
+ "cn=LDAPAdmin,ou=People,%{hiera('ldap::base_dn')}"
36
+ end
37
+
38
+ def validate( x )
39
+ (x.to_s =~ /^cn=/) ? true : false
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,35 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapRootHash < PasswordItem
9
+ def initialize
10
+ super
11
+ @key = 'ldap::root_hash'
12
+ @description = %Q{The LDAP root password hash.
13
+
14
+ If you set this with simp config, type the password and the hash will be
15
+ generated for you.' }.gsub( /^\s{8}/, '' )
16
+ @generate_by_default = false
17
+ end
18
+
19
+ def os_value
20
+ if File.readable?('/etc/openldap/slapd.conf')
21
+ `grep rootpw /etc/openldap/slapd.conf` =~ /\Arootpw\s+(.*)\s*/
22
+ $1
23
+ end
24
+ end
25
+
26
+ def encrypt( string, salt=nil )
27
+ Simp::Cli::Config::Utils.encrypt_openldap_hash( string, salt )
28
+ end
29
+
30
+ def validate( x )
31
+ Simp::Cli::Config::Utils.validate_openldap_hash( x ) ||
32
+ ( !x.to_s.strip.empty? && super )
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,24 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapSyncDn < Item
9
+ def initialize
10
+ super
11
+ @key = 'ldap::sync_dn'
12
+ @description = %Q{}
13
+ end
14
+
15
+ def validate( x )
16
+ (x.to_s =~ /^cn=/) ? true : false
17
+ end
18
+
19
+ def recommended_value
20
+ "cn=LDAPSync,ou=Hosts,%{hiera('ldap::base_dn')}"
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'highline/import'
2
+ require File.expand_path( '../item', File.dirname(__FILE__) )
3
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
4
+
5
+ module Simp; end
6
+ class Simp::Cli; end
7
+ module Simp::Cli::Config
8
+ class Item::LdapSyncHash < Item
9
+ def initialize
10
+ super
11
+ @key = 'ldap::sync_hash'
12
+ @skip_query = true
13
+ @description = %Q{}
14
+ end
15
+
16
+ def recommended_value
17
+ encrypt( @config_items.fetch( 'ldap::sync_pw' ).value )
18
+ end
19
+
20
+ def encrypt( string, salt=nil )
21
+ Simp::Cli::Config::Utils.encrypt_openldap_hash( string, salt )
22
+ end
23
+
24
+ def validate( x )
25
+ Simp::Cli::Config::Utils.validate_openldap_hash( x )
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path( '../item', File.dirname(__FILE__) )
2
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
3
+
4
+ module Simp; end
5
+ class Simp::Cli; end
6
+
7
+ module Simp::Cli::Config
8
+ class Item::LdapSyncPw < PasswordItem
9
+ def initialize
10
+ super
11
+ @key = 'ldap::sync_pw'
12
+ @description = %Q{The LDAP sync password}
13
+ end
14
+
15
+
16
+ def validate string
17
+ !string.to_s.strip.empty? && super
18
+ end
19
+
20
+
21
+ # LDAP Bind PW must known and stored in cleartext
22
+ def encrypt string
23
+ string
24
+ end
25
+ end
26
+ end