Fix deletion graph (no cobbler mode)

Change-Id: I0bbf9d2a261dcf3e1c8a8d11bdb4073353f87936
Implements: blueprint get-rid-cobbler-dnsmasq
Depends-On: I80c62056dcfdf70b3786e163960d0307849e019c
This commit is contained in:
Vladimir Kozhukalov 2017-03-20 11:32:38 +03:00
parent 0b5ab4ff80
commit 83ae1d3d61
9 changed files with 126 additions and 118 deletions

View File

@ -6,7 +6,6 @@ $data = [
'nodes',
'networks',
'astute',
'known_hosts',
'provision',
'common',
]

View File

@ -2,19 +2,20 @@ notice('MODULAR: provision.pp')
Exec {path => '/usr/bin:/bin:/usr/sbin:/sbin'}
$fuel_settings = parseyaml($astute_settings_yaml)
$fuel_settings = parseyaml($astute_settings_yaml)
$mco_user = $::fuel_settings['mcollective']['user']
$mco_pass = $::fuel_settings['mcollective']['password']
$dns_address = $::fuel_settings['ADMIN_NETWORK']['ipaddress']
$domain_name = $::fuel_settings['DNS_DOMAIN']
$dns_search = $::fuel_settings['DNS_SEARCH']
$forwarders = split($::fuel_settings['DNS_UPSTREAM'], ',')
$start_address = $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_start']
$end_address = $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_end']
$network_mask = $::fuel_settings['ADMIN_NETWORK']['netmask']
$network_address = ipcalc_network_by_address_netmask($start_address, $network_mask)
$dhcp_gateway = $::fuel_settings['ADMIN_NETWORK']['dhcp_gateway']
$mco_user = $::fuel_settings['mcollective']['user']
$mco_pass = $::fuel_settings['mcollective']['password']
$dns_address = $::fuel_settings['ADMIN_NETWORK']['ipaddress']
$domain_name = $::fuel_settings['DNS_DOMAIN']
$dns_search = $::fuel_settings['DNS_SEARCH']
$forwarders = split($::fuel_settings['DNS_UPSTREAM'], ',')
$start_address = $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_start']
$end_address = $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_end']
$network_mask = $::fuel_settings['ADMIN_NETWORK']['netmask']
$network_address = ipcalc_network_by_address_netmask($start_address, $network_mask)
$dhcp_gateway = $::fuel_settings['ADMIN_NETWORK']['dhcp_gateway']
if $dhcp_gateway {
$router = $dhcp_gateway
}
@ -22,22 +23,20 @@ else {
$router = $::fuel_settings['ADMIN_NETWORK']['ipaddress']
}
$next_server = $::fuel_settings['ADMIN_NETWORK']['ipaddress']
$nailgun_api_url = "http://${::fuel_settings['ADMIN_NETWORK']['ipaddress']}:8000/api"
$ethdevice_timeout = hiera('ethdevice_timeout', '120')
$ddns_key = hiera('ddns_key', 'VyCWe0kutrawqQ2WEFKkAw=')
$ddns_key_algorithm = hiera('ddns_key_algorithm', 'HMAC-MD5')
$ddns_key_name = hiera('ddns_key_name', 'DHCP_UPDATE')
$bootstrap_menu_label = hiera('bootstrap_menu_label', 'bootstrap')
$next_server = $::fuel_settings['ADMIN_NETWORK']['ipaddress']
$nailgun_api_url = "http://${::fuel_settings['ADMIN_NETWORK']['ipaddress']}:8000/api"
$ethdevice_timeout = hiera('ethdevice_timeout', '120')
$ddns_key = hiera('ddns_key', 'VyCWe0kutrawqQ2WEFKkAw=')
$ddns_key_algorithm = hiera('ddns_key_algorithm', 'HMAC-MD5')
$ddns_key_name = hiera('ddns_key_name', 'DHCP_UPDATE')
$bootstrap_menu_label = hiera('bootstrap_menu_label', 'bootstrap')
$bootstrap_kernel_path = hiera('bootstrap_kernel_path', '/images/vmlinuz')
$bootstrap_initrd_path = hiera('bootstrap_initrd_path', '/images/initrd.img')
$bootstrap_settings = pick($::fuel_settings['BOOTSTRAP'], {})
$bootstrap_path = pick($bootstrap_settings['path'], '/var/www/nailgun/bootstraps/active_bootstrap')
$metadata_yaml = file("${bootstrap_path}/metadata.yaml", '/dev/null')
$bootstrap_settings = pick($::fuel_settings['BOOTSTRAP'], {})
$bootstrap_path = pick($bootstrap_settings['path'], '/var/www/nailgun/bootstraps/active_bootstrap')
$metadata_yaml = file("${bootstrap_path}/metadata.yaml", '/dev/null')
if empty($metadata_yaml) {
$bootstrap_meta = {}
} else {
@ -51,44 +50,44 @@ $known_hosts = get_merged_network_metadata_from_yamls()
$chain32_files = tftp_files("/var/lib/tftpboot/pxelinux.cfg", $known_hosts)
class { "::provision::dhcpd" :
network_address => ipcalc_network_by_address_netmask($start_address, $network_mask),
network_mask => $network_mask,
broadcast_address => $broadcast_address,
start_address => $start_address,
end_address => $end_address,
router => $router,
next_server => $next_server,
dns_address => $dns_address,
domain_name => $domain_name,
ddns_key => $ddns_key,
network_address => ipcalc_network_by_address_netmask($start_address, $network_mask),
network_mask => $network_mask,
broadcast_address => $broadcast_address,
start_address => $start_address,
end_address => $end_address,
router => $router,
next_server => $next_server,
dns_address => $dns_address,
domain_name => $domain_name,
ddns_key => $ddns_key,
ddns_key_algorithm => $ddns_key_algorithm,
ddns_key_name => $ddns_key_name,
known_hosts => $known_hosts,
ddns_key_name => $ddns_key_name,
known_hosts => $known_hosts,
}
class { "::provision::tftp" :
bootstrap_menu_label => $bootstrap_menu_label,
bootstrap_kernel_path => $bootstrap_kernel_path,
bootstrap_initrd_path => $bootstrap_initrd_path,
bootstrap_menu_label => $bootstrap_menu_label,
bootstrap_kernel_path => $bootstrap_kernel_path,
bootstrap_initrd_path => $bootstrap_initrd_path,
bootstrap_kernel_params => $bootstrap_kernel_params,
chain32_files => $chain32_files,
chain32_files => $chain32_files,
} ->
file { "/var/lib/tftpboot${bootstrap_kernel_path}" :
file { "/var/lib/tftpboot/${bootstrap_kernel_path}" :
source => "${bootstrap_path}/vmlinuz",
} ->
file { "/var/lib/tftpboot${bootstrap_initrd_path}" :
file { "/var/lib/tftpboot/${bootstrap_initrd_path}" :
source => "${bootstrap_path}/initrd.img"
}
class { "::provision::named" :
domain_name => $domain_name,
dns_address => $dns_address,
forwarders => $forwarders,
ddns_key => $ddns_key,
domain_name => $domain_name,
dns_address => $dns_address,
forwarders => $forwarders,
ddns_key => $ddns_key,
ddns_key_algorithm => $ddns_key_algorithm,
ddns_key_name => $ddns_key_name,
ddns_key_name => $ddns_key_name,
} ->
file { '/etc/resolv.conf':

View File

@ -14,9 +14,10 @@ class provision::dhcpd (
$known_hosts = [],
) inherits provision::params {
package { "dhcpd" :
name => $::provision::params::dhcpd_package,
}
$package_name = $::provision::params::dhcpd_package
$service_name = $::provision::params::dhcpd_service
package { $package_name : }
file { $::provision::params::dhcpd_conf :
ensure => present,
@ -24,8 +25,8 @@ class provision::dhcpd (
owner => 'dhcpd',
group => 'dhcpd',
mode => '0640',
require => Package["dhcpd"],
notify => Service["dhcpd"],
require => Package[$package_name],
notify => Service[$service_name],
}
file { $::provision::params::dhcpd_conf_d :
@ -33,7 +34,7 @@ class provision::dhcpd (
owner => 'root',
group => 'root',
mode => '0755',
require => Package["dhcpd"],
require => Package[$package_name],
}
# It is just a file that could be modified by other modules
@ -42,13 +43,12 @@ class provision::dhcpd (
require => File[$::provision::params::dhcpd_conf_d],
}
service { "dhcpd" :
name => $::provision::params::dhcpd_service,
service { $service_name :
ensure => running,
enable => true,
hasrestart => false,
hasstatus => false,
require => Package["dhcpd"],
require => Package[$package_name],
}
}

View File

@ -7,16 +7,17 @@ class provision::named (
$ddns_key_name = $::provision::params::ddns_key_name,
) inherits provision::params {
package { "named" :
name => $::provision::params::named_package,
}
$package_name = $::provision::params::named_package
$service_name = $::provision::params::named_service
package { $package_name : }
file { "/var/named" :
ensure => directory,
owner => 'named',
group => 'named',
mode => '0750',
require => Package["named"],
require => Package[$package_name],
}
file { $::provision::params::named_conf :
@ -25,8 +26,8 @@ class provision::named (
owner => 'named',
group => 'named',
mode => '0640',
require => Package["named"],
notify => Service["named"],
require => Package[$package_name],
notify => Service[$service_name],
}
file { "/var/named/${domain_name}" :
@ -35,17 +36,16 @@ class provision::named (
owner => 'named',
group => 'named',
mode => '0644',
require => Package["named"],
notify => Service["named"],
require => Package[$package_name],
notify => Service[$service_name],
}
service { "named" :
name => $::provision::params::named_service,
service { $service_name :
ensure => running,
enable => true,
hasrestart => false,
hasstatus => false,
require => Package["named"],
require => Package[$package_name],
}
}

View File

@ -14,23 +14,23 @@ class provision::params {
fail("Unsupported osfamily ${::osfamily}")
}
}
$network_address = "10.20.0.0"
$network_mask = "255.255.255.0"
$broadcast_address = "10.20.0.255"
$start_address = "10.20.0.3"
$end_address = "10.20.0.254"
$router = "10.20.0.1"
$next_server = "10.20.0.2"
$dns_address = "10.20.0.2"
$forwarders = ["8.8.8.8", "8.8.4.4"]
$domain_name = "domain.tld"
$ddns_key = "VyCWe0kutrawqQ2WEFKkAw=="
$ddns_key_algorithm = "HMAC-MD5"
$ddns_key_name = "DHCP_UPDATE"
$bootstrap_kernel_path = "/images/ubuntu_bootstrap/vmlinuz"
$bootstrap_initrd_path = "/images/ubuntu_bootstrap/initrd.img"
$network_address = "10.20.0.0"
$network_mask = "255.255.255.0"
$broadcast_address = "10.20.0.255"
$start_address = "10.20.0.3"
$end_address = "10.20.0.254"
$router = "10.20.0.1"
$next_server = "10.20.0.2"
$dns_address = "10.20.0.2"
$forwarders = ["8.8.8.8", "8.8.4.4"]
$domain_name = "domain.tld"
$ddns_key = "VyCWe0kutrawqQ2WEFKkAw=="
$ddns_key_algorithm = "HMAC-MD5"
$ddns_key_name = "DHCP_UPDATE"
$bootstrap_kernel_path = "/images/ubuntu_bootstrap/vmlinuz"
$bootstrap_initrd_path = "/images/ubuntu_bootstrap/initrd.img"
$bootstrap_kernel_params = "ksdevice=bootif lang= console=ttyS0,9600 console=tty0 toram locale=en_US text boot=live biosdevname=0 components ip=frommedia ethdevice-timeout=120 net.ifnames=1 panic=60"
$bootstrap_menu_label = "ubuntu_bootstrap"
$bootstrap_menu_label = "ubuntu_bootstrap"
$tftp_root = "/var/lib/tftpboot"
}

View File

@ -1,9 +1,10 @@
class provision::tftp (
$bootstrap_kernel_params = $::provision::params::bootstrap_kernel_params,
$bootstrap_kernel_path = $::provision::params::bootstrap_kernel_path,
$bootstrap_initrd_path = $::provision::params::bootstrap_initrd_path,
$bootstrap_menu_label = $::provision::params::bootstrap_menu_label,
$chain32_files = [],
$bootstrap_kernel_path = $::provision::params::bootstrap_kernel_path,
$bootstrap_initrd_path = $::provision::params::bootstrap_initrd_path,
$bootstrap_menu_label = $::provision::params::bootstrap_menu_label,
$tftp_root = $::provision::params::tftp_root,
$chain32_files = [],
) inherits provision::params {
Exec {path => '/usr/bin:/bin:/usr/sbin:/sbin'}
@ -45,7 +46,7 @@ class provision::tftp (
ensure_packages($tftp_packages)
file { ["/var/lib/tftpboot/images", "/var/lib/tftpboot/pxelinux.cfg"] :
file { ["${tftp_root}/images", "${tftp_root}/pxelinux.cfg"] :
ensure => directory,
owner => 'root',
group => 'root',
@ -53,35 +54,35 @@ class provision::tftp (
require => Package[$tftp_packages],
}
file { "/var/lib/tftpboot/pxelinux.cfg/default" :
file { "${tftp_root}/pxelinux.cfg/default" :
ensure => present,
content => template("provision/tftp.default.erb"),
owner => 'root',
group => 'root',
mode => '0644',
require => File["/var/lib/tftpboot/pxelinux.cfg"],
require => File["${tftp_root}/pxelinux.cfg"],
}
file { '/var/lib/tftpboot/chain.c32':
file { "${tftp_root}/chain.c32":
source => '/usr/share/syslinux/chain.c32',
require => Package[$tftp_packages],
}
file { '/var/lib/tftpboot/pxelinux.0':
file { "${tftp_root}/pxelinux.0":
source => '/usr/share/syslinux/pxelinux.0',
require => Package[$tftp_packages],
}
file { '/var/lib/tftpboot/menu.c32':
file { "${tftp_root}/menu.c32":
source => '/usr/share/syslinux/menu.c32',
require => Package[$tftp_packages],
}
# TODO Create custom type that will remove all 01-* files that
# are not in the $chain32_files list
exec { 'remove /var/lib/tftpboot/pxelinux.cfg/01-* files' :
command => "find /var/lib/tftpboot/pxelinux.cfg -type f -name '01-*' -delete",
require => File["/var/lib/tftpboot/pxelinux.cfg"],
exec { "remove ${tftp_root}/pxelinux.cfg/01-* files" :
command => "find ${tftp_root}/pxelinux.cfg -type f -name '01-*' -delete",
require => File["${tftp_root}/pxelinux.cfg"],
} ->
file { $chain32_files :
@ -90,6 +91,6 @@ class provision::tftp (
owner => 'root',
group => 'root',
mode => '0644',
require => File["/var/lib/tftpboot/pxelinux.cfg"],
require => File["${tftp_root}/pxelinux.cfg"],
}
}

View File

@ -1,10 +1,10 @@
defaults
{
log_type = SYSLOG daemon info
log_type = SYSLOG daemon info
log_on_failure = HOST
log_on_success = PID HOST DURATION EXIT
cps = 50 10
cps = 50 10
instances = 50
per_source = 10

View File

@ -7,35 +7,44 @@
type: stage
requires: [deletion_start]
- id: cobbler_enable_netboot
type: master_shell
- id: upload_provision_info_master
type: upload_file
version: 2.1.0
role: ['/.*/']
role: ['master']
requires: [deletion_start]
required_for: [move_to_bootstrap]
required_for: [reconfigure_dhcpd]
parameters:
cmd:
yaql_exp: 'concat("sh /etc/puppet/modules/osnailyfacter/modular/provision/netboot enable ", $.provision.name)'
path: /var/lib/fuel/configs/{CLUSTER_ID}/provision.yaml
timeout: 180
data:
#TODO: Replace dict($.items) to $ when LP1666913 is fixed
yaql_exp: "($.provision.set('packages', $.provision.packages) + $.repo_setup + dict('output' => '/var/www/nailgun/targetimages') + dict($.items())).toYaml()"
- id: move_to_bootstrap
type: move_to_bootstrap
- id: reconfigure_dhcpd
type: puppet
version: 2.1.0
role: ['master']
requires: [upload_provision_info_master]
required_for: [node_reboot]
parameters:
puppet_manifest: /etc/puppet/modules/fuel/examples/provision.pp
puppet_modules: /etc/puppet/modules
timeout: 3600
- id: node_reboot
type: reboot
version: 2.1.0
role: ['/.*/']
requires: [cobbler_enable_netboot]
requires: [reconfigure_dhcpd]
required_for: [node_erase]
parameters:
slave_name:
yaql_exp: '$.provision.name'
provisioning_info:
yaql_exp: '$.provision'
timeout: 180
timeout: 300
- id: node_erase
type: erase_node
version: 2.1.0
role: ['/.*/']
requires: [move_to_bootstrap]
requires: [node_reboot]
required_for: [deletion_end]
parameters:
timeout: 180

View File

@ -85,7 +85,7 @@
type: reboot
version: 2.1.0
role: ['/.*/']
requires: [cobbler_disable_netboot]
requires: [system_provision]
required_for: [set_status_provisioned]
parameters:
timeout: 900