:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Copyright (c) 2017 Enea AB, Cavium and others. : : All rights reserved. This program and the accompanying materials : are made available under the terms of the Apache License, Version 2.0 : which accompanies this distribution, and is available at : http://www.apache.org/licenses/LICENSE-2.0 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: From: Stanislaw Kardach Date: Sun, 21 Feb 2016 16:29:52 +0100 Subject: [PATCH] Add arm64 templates to cobbler and nailgun Add grub template import to cobbler server manifest Add arm64 templates to cobbler and nailgun [ Matei Valeanu ] Add grub template to cobbler for MAC-files Limitation: grub2 needs to be installed directly on the root (/) of a device or partition, as the MAC-files will search for /grub/grub.cfg on the available partitions [ Alexandru Avadanii ] Rebased for Fuel Newton after upstream change: "Remove deprecated cobbler parts for classic provisioning" [1]. [1] https://github.com/openstack/fuel-library/commit/ e207593d7b3234cfbde6689dbccdcafe6ba67e58 Signed-off-by: Stanislaw Kardach Signed-off-by: Matei Valeanu Signed-off-by: Alexandru Avadanii --- deployment/puppet/cobbler/manifests/server.pp | 36 ++++++++++++++++++++++ .../puppet/cobbler/templates/dnsmasq.template.erb | 2 ++ .../cobbler/templates/efidefault.template.erb | 5 +++ .../cobbler/templates/grublocal.template.erb | 2 ++ .../cobbler/templates/grubprofile.template.erb | 12 ++++++++ .../cobbler/templates/grubsystem.template.erb | 16 ++++++++++ deployment/puppet/fuel/manifests/auxiliaryrepos.pp | 12 +++++--- deployment/puppet/fuel/manifests/cobbler.pp | 36 +++++++++++++++++----- 10 files changed, 125 insertions(+), 11 deletions(-) create mode 100644 deployment/puppet/cobbler/templates/efidefault.template.erb create mode 100644 deployment/puppet/cobbler/templates/grublocal.template.erb create mode 100644 deployment/puppet/cobbler/templates/grubprofile.template.erb create mode 100644 deployment/puppet/cobbler/templates/grubsystem.template.erb diff --git a/deployment/puppet/cobbler/manifests/server.pp b/deployment/puppet/cobbler/manifests/server.pp index 891dff7..52936d5 100644 --- a/deployment/puppet/cobbler/manifests/server.pp +++ b/deployment/puppet/cobbler/manifests/server.pp @@ -297,6 +297,42 @@ class cobbler::server ( notify => [Service[$cobbler_service], Exec['cobbler_sync']], } + file { '/etc/cobbler/pxe/efidefault.template': + content => template('cobbler/efidefault.template.erb'), + owner => 'root', + group => 'root', + mode => '0644', + require => Package[$cobbler::packages::cobbler_package], + notify => [Service[$cobbler_service], Exec['cobbler_sync']], + } + + file { '/etc/cobbler/pxe/grubprofile.template': + content => template('cobbler/grubprofile.template.erb'), + owner => 'root', + group => 'root', + mode => '0644', + require => Package[$cobbler::packages::cobbler_package], + notify => [Service[$cobbler_service], Exec['cobbler_sync']], + } + + file { '/etc/cobbler/pxe/grubsystem.template': + content => template('cobbler/grubsystem.template.erb'), + owner => 'root', + group => 'root', + mode => '0644', + require => Package[$cobbler::packages::cobbler_package], + notify => [Service[$cobbler_service], Exec['cobbler_sync']], + } + + file { '/etc/cobbler/pxe/grublocal.template': + content => template('cobbler/grublocal.template.erb'), + owner => 'root', + group => 'root', + mode => '0644', + require => Package[$cobbler::packages::cobbler_package], + notify => [Service[$cobbler_service], Exec['cobbler_sync']], + } + exec { '/var/lib/tftpboot/chain.c32': command => 'cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot/chain.c32', unless => 'test -e /var/lib/tftpboot/chain.c32', diff --git a/deployment/puppet/cobbler/templates/dnsmasq.template.erb b/deployment/puppet/cobbler/templates/dnsmasq.template.erb index d70f8de..98278e9 100644 --- a/deployment/puppet/cobbler/templates/dnsmasq.template.erb +++ b/deployment/puppet/cobbler/templates/dnsmasq.template.erb @@ -41,5 +41,7 @@ dhcp-no-override # by assigning IPs one by one instead of using hash algorithm. dhcp-sequential-ip +dhcp-match=set:arm64,93,11 +dhcp-boot=net:arm64,grub/grub-aarch64.efi,boothost,<%= @next_server %> dhcp-option=6,<%= @name_server %> $insert_cobbler_system_definitions diff --git a/deployment/puppet/cobbler/templates/efidefault.template.erb b/deployment/puppet/cobbler/templates/efidefault.template.erb new file mode 100644 index 0000000..af09eb8 --- /dev/null +++ b/deployment/puppet/cobbler/templates/efidefault.template.erb @@ -0,0 +1,5 @@ +set default=1 +set timeout=5 +tr -s ipxe_mac ':' '-' $net_default_mac + +$grub_menu_items diff --git a/deployment/puppet/cobbler/templates/grublocal.template.erb b/deployment/puppet/cobbler/templates/grublocal.template.erb new file mode 100644 index 0000000..e16c27d --- /dev/null +++ b/deployment/puppet/cobbler/templates/grublocal.template.erb @@ -0,0 +1,2 @@ +search --file --no-floppy --set grub_install_device /grub/grub.cfg +configfile ($grub_install_device)/grub/grub.cfg diff --git a/deployment/puppet/cobbler/templates/grubprofile.template.erb b/deployment/puppet/cobbler/templates/grubprofile.template.erb new file mode 100644 index 0000000..eb7557c --- /dev/null +++ b/deployment/puppet/cobbler/templates/grubprofile.template.erb @@ -0,0 +1,12 @@ +menuentry '$profile_name' { + echo 'Network status:' + net_ls_cards + net_ls_addr + net_ls_routes + + echo 'Loading Linux ...' + linux (tftp)$kernel_path $kernel_options BOOTIF=01-$ipxe_mac + echo 'Loading initial ramdisk ...' + initrd (tftp)$initrd_path + echo 'Booting bootstrap image ...' +} diff --git a/deployment/puppet/cobbler/templates/grubsystem.template.erb b/deployment/puppet/cobbler/templates/grubsystem.template.erb new file mode 100644 index 0000000..9a191bc --- /dev/null +++ b/deployment/puppet/cobbler/templates/grubsystem.template.erb @@ -0,0 +1,16 @@ +set default=1 +set timeout=5 +tr -s ipxe_mac ':' '-' $net_default_mac + +menuentry '$profile_name' { + echo 'Network status:' + net_ls_cards + net_ls_addr + net_ls_routes + + echo 'Loading Linux ...' + linux (tftp)$kernel_path $kernel_options BOOTIF=01-$ipxe_mac + echo 'Loading initial ramdisk ...' + initrd (tftp)$initrd_path + echo 'Booting bootstrap image ...' +} diff --git a/deployment/puppet/fuel/manifests/auxiliaryrepos.pp b/deployment/puppet/fuel/manifests/auxiliaryrepos.pp index 493ffc6..909fc92 100644 --- a/deployment/puppet/fuel/manifests/auxiliaryrepos.pp +++ b/deployment/puppet/fuel/manifests/auxiliaryrepos.pp @@ -53,17 +53,21 @@ class fuel::auxiliaryrepos( exec { 'create_ubuntu_repo_dirs': path => '/bin:/sbin:/usr/bin:/usr/sbin', - command => "bash -c \"mkdir -p ${ubuntu_dir}/pool/{main,restricted} ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-amd64/\"", + command => "bash -c \"mkdir -p ${ubuntu_dir}/pool/{main,restricted} ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-{amd64,arm64}/\"", unless => "test -d ${ubuntu_dir}/pool && \ test -d ${ubuntu_dir}/dists/auxiliary/main/binary-amd64 && \ - test -d ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64", + test -d ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64 && \ + test -d ${ubuntu_dir}/dists/auxiliary/main/binary-arm64 && \ + test -d ${ubuntu_dir}/dists/auxiliary/restricted/binary-arm64", } exec { 'create_ubuntu_repo_Packages': path => '/bin:/sbin:/usr/bin:/usr/sbin', - command => "bash -c \"touch ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-amd64/Packages\"", + command => "bash -c \"touch ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-{amd64,arm64}/Packages\"", unless => "test -f ${ubuntu_dir}/dists/auxiliary/main/binary-amd64/Packages && \ - test -f ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64/Packages", + test -f ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64/Packages && \ + test -f ${ubuntu_dir}/dists/auxiliary/main/binary-arm64/Packages && \ + test -f ${ubuntu_dir}/dists/auxiliary/restricted/binary-arm64/Packages", } file { $release_files: diff --git a/deployment/puppet/fuel/manifests/cobbler.pp b/deployment/puppet/fuel/manifests/cobbler.pp index b403733..c89027d 100644 --- a/deployment/puppet/fuel/manifests/cobbler.pp +++ b/deployment/puppet/fuel/manifests/cobbler.pp @@ -166,7 +188,7 @@ class fuel::cobbler( distro => 'ubuntu_bootstrap', menu => true, kickstart => '', - kopts => extend_kopts($bootstrap_meta['extend_kopts'], "console=ttyS0,9600 console=tty0 panic=60 ethdevice-timeout=${bootstrap_ethdevice_timeout} boot=live toram components fetch=http://${server}:8080/bootstraps/active_bootstrap/root.squashfs biosdevname=0 url=${nailgun_api_url} mco_user=${mco_user} mco_pass=${mco_pass} ip=frommedia"), + kopts => extend_kopts($bootstrap_meta['extend_kopts'], "console=ttyAMA0,115200 console=ttyS0,115200 panic=60 ethdevice-timeout=${bootstrap_ethdevice_timeout} boot=live toram components fetch=http://${server}:8080/bootstraps/active_bootstrap/root.squashfs biosdevname=0 url=${nailgun_api_url} mco_user=${mco_user} mco_pass=${mco_pass} ip=frommedia"), ksmeta => '', server => $real_server, require => Cobbler_distro['ubuntu_bootstrap'],