Bryan Kearney
2008-Dec-23 20:15 UTC
[Ovirt-devel] [PATCH PuppetInstaller] Add re-usable yes/no logic to the install script. Improve Indentation
--- ace-ovirt/modules/ovirt/ovirt-installer | 258 +++++++++++++++---------------- 1 files changed, 124 insertions(+), 134 deletions(-) diff --git a/ace-ovirt/modules/ovirt/ovirt-installer b/ace-ovirt/modules/ovirt/ovirt-installer index b55b6d6..cc89cf8 100755 --- a/ace-ovirt/modules/ovirt/ovirt-installer +++ b/ace-ovirt/modules/ovirt/ovirt-installer @@ -23,13 +23,28 @@ require 'socket' require 'fileutils' -if File.exist?("/usr/sbin/sestatus") -sestatus = `/usr/sbin/sestatus` -if sestatus !~ /(Current mode: permissive|Current mode: disabled|SELinux status: disabled|SELinux status: permissive)/ -puts "SELinux enabled, please disable or set in permissive mode permanently by editing" -puts "/etc/selinux/config and rebooting" -exit + +# Allow a user to enter a Yes/No +# And repeat the prompt until they do +def prompt_yes_no(prompt) + puts("\n#{prompt} (y/n)") + answer = gets.chomp().downcase() + while answer != "y" and answer != "n" + puts("Invalid choice") + puts("\n#{prompt} (y/n)") + answer = gets.chomp + end + + return answer end + +if File.exist?("/usr/sbin/sestatus") + sestatus = `/usr/sbin/sestatus` + if sestatus !~ /(Current mode: permissive|Current mode: disabled|SELinux status: disabled|SELinux status: permissive)/ + puts "SELinux enabled, please disable or set in permissive mode permanently by editing" + puts "/etc/selinux/config and rebooting" + exit + end end FileUtils.mkdir_p("/usr/share/ace/appliances/ovirt") @@ -43,82 +58,70 @@ prov_dev = "" dev_ct = 0 net_devs = `hal-find-by-capability --capability net` -net_devs.each_line{ |dev| -dev_ct = dev_ct + 1 -} +net_devs.each_line do |dev| + dev_ct = dev_ct + 1 +end if dev_ct == 0 -puts "Unable to install without a network interface" -exit - + puts "Unable to install without a network interface" + exit else -puts "" -get_net_devs = `hal-find-by-capability --capability net` -puts "Below are the detected networking devices\n\n" -puts "mac address interface ip address" -net_devs.each_line{ |dev| -dev = dev.chomp -interface = `hal-get-property --udi #{dev} --key net.interface` -mac = `hal-get-property --udi #{dev} --key net.address` -ip = `ifconfig #{interface}` -ipaddr = ip.scan(/\s*inet addr:([\d.]+)/) -puts mac.chop + " : " + interface.chop + " : " + ipaddr.to_s if interface.chop != "lo" -} + puts "" + get_net_devs = `hal-find-by-capability --capability net` + puts "Below are the detected networking devices\n\n" + puts "mac address interface ip address" + net_devs.each_line do|dev| + dev = dev.chomp + interface = `hal-get-property --udi #{dev} --key net.interface` + mac = `hal-get-property --udi #{dev} --key net.address` + ip = `ifconfig #{interface}` + ipaddr = ip.scan(/\s*inet addr:([\d.]+)/) + puts mac.chop + " : " + interface.chop + " : " + ipaddr.to_s if interface.chop != "lo" + end end if dev_ct > 1 -puts "\nDo you want separate management and provisioning networks? (y/n)" -sep_networks = gets.chomp -while sep_networks != "y" and sep_networks != "n" -puts "Invalid choice" -puts "Do you want separate management and provisioning networks? (y/n)" -sep_networks = gets.chomp -end - -if sep_networks == "y" -while mgmt_dev == "" -puts "Input your management interface (example: eth0)" -mgmt_dev = gets.chomp -end - -while prov_dev == "" -puts "Input your provisioning interface, this may also be your management interface (example: eth1)" -prov_dev = gets.chomp -end - -elsif sep_networks == "n" -while mgmt_dev == "" -puts "Input your management/provisioning interface (example: eth1)" -mgmt_dev = gets.chomp -prov_dev = mgmt_dev -end -end - + sep_networks = prompt_yes_no("Do you want separate management and provisioning networks?") + + if sep_networks == "y" + while mgmt_dev == "" + puts "Input your management interface (example: eth0)" + mgmt_dev = gets.chomp + end + + while prov_dev == "" + puts "Input your provisioning interface, this may also be your management interface (example: eth1)" + prov_dev = gets.chomp + end + + elsif sep_networks == "n" + while mgmt_dev == "" + puts "Input your management/provisioning interface (example: eth1)" + mgmt_dev = gets.chomp + prov_dev = mgmt_dev + end + end elsif dev_ct == 1 -while mgmt_dev == "" -puts "\nOnly one networking device detected" -puts "Input your management/provisioning interface (example: eth1)" -mgmt_dev = gets.chomp -prov_dev = mgmt_dev -puts "Need Management interface" -end + while mgmt_dev == "" + puts "\nOnly one networking device detected" + puts "Input your management/provisioning interface (example: eth1)" + mgmt_dev = gets.chomp + prov_dev = mgmt_dev + puts "Need Management interface" + end end puts "Enter the hostname of the oVirt management server (example: management.example.com)" ovirt_host = gets.chomp ipa_host = ovirt_host -puts "\nUse this system's dns servers (y/n)" -File.open('/etc/resolv.conf').each_line{ |line| - line = line.chomp -puts line if line =~ /nameserver/ and line !~ /nameserver 127.0.0.1/ -} -dns_servers = gets.chomp - -while dns_servers != "y" and dns_servers != "n" -puts "Invalid choice" -dns_servers = gets.chomp +prompt = "\nUse this system's dns servers?" +File.open('/etc/resolv.conf').each_line do |line| + line = line.chomp + prompt << "\n #{line}" if line =~ /nameserver/ and line !~ /nameserver 127.0.0.1/ end +prompt << "\nPlease Enter" +dns_servers = prompt_yes_no(prompt) mgmt_ip = `ifconfig #{mgmt_dev}` mgmt_ipaddr= mgmt_ip.scan(/\s*inet addr:([\d.]+)/) @@ -132,91 +135,78 @@ config_file.write "$ovirt_host = '#{ovirt_host}'\n" config_file.write "$ipa_host = '#{ipa_host}'\n\n" if dns_servers == "n" -config_file.write "dns::bundled{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n" + config_file.write "dns::bundled{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n" end if dns_servers == "y" -config_file.write "dns::remote{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n" -host_lookup = Socket.getaddrinfo(ipa_host,nil) -hostip = host_lookup[1][3] -if hostip.to_s != mgmt_ipaddr.to_s -puts "Reverse dns lookup for #{ipa_host} failed, exiting" -exit -end + config_file.write "dns::remote{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n" + host_lookup = Socket.getaddrinfo(ipa_host,nil) + hostip = host_lookup[1][3] + if hostip.to_s != mgmt_ipaddr.to_s + puts "Reverse dns lookup for #{ipa_host} failed, exiting" + exit + end end -puts "Does you provisioning network already have dhcp? (y/n)" -dhcp_setup = gets.chomp -while dhcp_setup != "y" and dhcp_setup != "n" -puts "Invalid choice" -dhcp_setup = gets.chomp -end +dhcp_setup = prompt_yes_no("Does you provisioning network already have dhcp?") if dhcp_setup == "n" -puts "DHCP Configuration\n" -config_file.write "# dhcp configuration\n" -dhcp_interface = prov_dev -config_file.write "$dhcp_interface = '#{dhcp_interface}'\n" + puts "DHCP Configuration\n" + config_file.write "# dhcp configuration\n" + dhcp_interface = prov_dev + config_file.write "$dhcp_interface = '#{dhcp_interface}'\n" -puts "Enter the first 3 octets of the dhcp network you wish to use (example: 192.168.50)" -dhcp_network = gets.chomp -config_file.write "$dhcp_network = '#{dhcp_network}'\n" + puts "Enter the first 3 octets of the dhcp network you wish to use (example: 192.168.50)" + dhcp_network = gets.chomp + config_file.write "$dhcp_network = '#{dhcp_network}'\n" -puts "Enter the dhcp pool start address (example: 3)" -dhcp_start = gets.chomp -config_file.write "$dhcp_start = '#{dhcp_start}'\n" + puts "Enter the dhcp pool start address (example: 3)" + dhcp_start = gets.chomp + config_file.write "$dhcp_start = '#{dhcp_start}'\n" -puts "Enter the dhcp pool end addess (example: 100)" -dhcp_stop = gets.chomp -config_file.write "$dhcp_stop = '#{dhcp_stop}'\n" + puts "Enter the dhcp pool end addess (example: 100)" + dhcp_stop = gets.chomp + config_file.write "$dhcp_stop = '#{dhcp_stop}'\n" -puts "Enter the dhcp domain you wish to use (example: example.com)" -dhcp_domain = gets.chomp -config_file.write "$dhcp_domain = '#{dhcp_domain}'\n" + puts "Enter the dhcp domain you wish to use (example: example.com)" + dhcp_domain = gets.chomp + config_file.write "$dhcp_domain = '#{dhcp_domain}'\n" -config_file.write "$ntp_server = '#{mgmt_ipaddr}'\n\n" + config_file.write "$ntp_server = '#{mgmt_ipaddr}'\n\n" -puts "Provide pxe/tftp capability? (y/n)" -tftp_setup = gets.chomp + tftp_setup = prompt_yes_no("Provide pxe/tftp capability? ") -if sep_networks == "y" -prov_ip = `ifconfig #{prov_dev}` -prov_dns_server = prov_ip.scan(/\s*inet addr:([\d.]+)/) -config_file.write "$prov_dns_server = '#{prov_dns_server}'\n" + if sep_networks == "y" + prov_ip = `ifconfig #{prov_dev}` + prov_dns_server = prov_ip.scan(/\s*inet addr:([\d.]+)/) + config_file.write "$prov_dns_server = '#{prov_dns_server}'\n" -puts "Enter the network gateway for your provisioning network (example: 192.168.50.254)" -prov_network_gateway = gets.chomp -config_file.write "$prov_network_gateway = '#{prov_network_gateway}'\n" -end + puts "Enter the network gateway for your provisioning network (example: 192.168.50.254)" + prov_network_gateway = gets.chomp + config_file.write "$prov_network_gateway = '#{prov_network_gateway}'\n" + end end # Cobbler Configuration -puts "Do you have a cobbler already that you wish to use? (y/n)" -cobbler_setup = gets.chomp - -while cobbler_setup != "y" and cobbler_setup != "n" -puts "Invalid choice" -cobbler_setup = gets.chomp -end - +cobbler_setup = prompt_yes_no("Do you have a cobbler already that you wish to use? ") cobbler_config = "n" if cobbler_setup == "y" -puts "Enter the hostname of your cobbler server" -cobbler_hostname = gets.chomp -puts "Enter your cobbler username" -cobbler_user_name= gets.chomp -puts "Enter your cobbler user password" -cobbler_user_password = gets.chomp + puts "Enter the hostname of your cobbler server" + cobbler_hostname = gets.chomp + puts "Enter your cobbler username" + cobbler_user_name= gets.chomp + puts "Enter your cobbler user password" + cobbler_user_password = gets.chomp elsif cobbler_setup == "n" -cobbler_hostname = "localhost" -puts "We will setup a cobbler instance, please provide the following information" -puts "Enter your cobbler username" -cobbler_user_name= gets.chomp -puts "Enter your cobbler user password" -cobbler_user_password = gets.chomp + cobbler_hostname = "localhost" + puts "We will setup a cobbler instance, please provide the following information" + puts "Enter your cobbler username" + cobbler_user_name= gets.chomp + puts "Enter your cobbler user password" + cobbler_user_password = gets.chomp end config_file.write "# cobbler configuration\n" @@ -244,24 +234,24 @@ config_file.write "$freeipa_password = '#{freeipa_password}'\n" ldap_dn = "cn=ipaConfig,cn=etc," ldap_dn_temp = realm_name.split(".") ldap_dn_temp.each do |i| -ldap_dn += "dc=#{i}," + ldap_dn += "dc=#{i}," end ldap_dn = ldap_dn.chop config_file.write "$ldap_dn = '#{ldap_dn}'\n\n" if cobbler_setup == "y" -config_file.write "include cobbler::remote\n" + config_file.write "include cobbler::remote\n" elsif cobbler_setup == "n" -config_file.write "include cobbler::bundled\n" + config_file.write "include cobbler::bundled\n" end if dhcp_setup == "n" -config_file.write "include dhcp::bundled\n" + config_file.write "include dhcp::bundled\n" end if tftp_setup == "y" -config_file.write "include tftp::bundled\n" + config_file.write "include tftp::bundled\n" end config_file.write "include postgres::bundled\n" -- 1.6.0.4