Revert "Makefile: Finalize RPM repo switch."
[armband.git] / patches / fuel-library / 0001-Add-arm64-templates-to-cobbler-and-nailgun.patch
1 From: Stanislaw Kardach <stanislaw.kardach@caviumnetworks.com>
2 Date: Sun, 21 Feb 2016 16:29:52 +0100
3 Subject: [PATCH] Add arm64 templates to cobbler and nailgun
4
5 Add grub template import to cobbler server manifest
6
7 Add arm64 templates to cobbler and nailgun
8 ---
9  deployment/puppet/cobbler/manifests/server.pp      | 27 +++++++++++++++
10  .../puppet/cobbler/templates/dnsmasq.template.erb  |  2 ++
11  .../cobbler/templates/efidefault.template.erb      |  5 +++
12  .../cobbler/templates/grubprofile.template.erb     | 12 +++++++
13  .../cobbler/templates/grubsystem.template.erb      | 16 +++++++++
14  .../templates/preseed/ubuntu-1404.preseed.erb      |  2 ++
15  .../puppet/nailgun/manifests/auxiliaryrepos.pp     | 12 ++++---
16  deployment/puppet/nailgun/manifests/cobbler.pp     | 38 +++++++++++++++++-----
17  .../puppet/nailgun/manifests/cobbler/preseed.pp    | 13 ++++++++
18  9 files changed, 115 insertions(+), 12 deletions(-)
19  create mode 100644 deployment/puppet/cobbler/templates/efidefault.template.erb
20  create mode 100644 deployment/puppet/cobbler/templates/grubprofile.template.erb
21  create mode 100644 deployment/puppet/cobbler/templates/grubsystem.template.erb
22  create mode 100644 deployment/puppet/nailgun/manifests/cobbler/preseed.pp
23
24 diff --git a/deployment/puppet/cobbler/manifests/server.pp b/deployment/puppet/cobbler/manifests/server.pp
25 index bdb1ae7..0523404 100644
26 --- a/deployment/puppet/cobbler/manifests/server.pp
27 +++ b/deployment/puppet/cobbler/manifests/server.pp
28 @@ -288,6 +288,33 @@ class cobbler::server (
29      notify  => [Service[$cobbler_service], Exec['cobbler_sync']],
30    }
31  
32 +  file { '/etc/cobbler/pxe/efidefault.template':
33 +    content => template('cobbler/efidefault.template.erb'),
34 +    owner   => 'root',
35 +    group   => 'root',
36 +    mode    => '0644',
37 +    require => Package[$cobbler::packages::cobbler_package],
38 +    notify  => [Service[$cobbler_service], Exec['cobbler_sync']],
39 +  }
40 +
41 +  file { '/etc/cobbler/pxe/grubprofile.template':
42 +    content => template('cobbler/grubprofile.template.erb'),
43 +    owner   => 'root',
44 +    group   => 'root',
45 +    mode    => '0644',
46 +    require => Package[$cobbler::packages::cobbler_package],
47 +    notify  => [Service[$cobbler_service], Exec['cobbler_sync']],
48 +  }
49 +
50 +  file { '/etc/cobbler/pxe/grubsystem.template':
51 +    content => template('cobbler/grubsystem.template.erb'),
52 +    owner   => 'root',
53 +    group   => 'root',
54 +    mode    => '0644',
55 +    require => Package[$cobbler::packages::cobbler_package],
56 +    notify  => [Service[$cobbler_service], Exec['cobbler_sync']],
57 +  }
58 +
59    exec { '/var/lib/tftpboot/chain.c32':
60      command => 'cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot/chain.c32',
61      unless  => 'test -e /var/lib/tftpboot/chain.c32',
62 diff --git a/deployment/puppet/cobbler/templates/dnsmasq.template.erb b/deployment/puppet/cobbler/templates/dnsmasq.template.erb
63 index 3a96ac1..8d3e753 100644
64 --- a/deployment/puppet/cobbler/templates/dnsmasq.template.erb
65 +++ b/deployment/puppet/cobbler/templates/dnsmasq.template.erb
66 @@ -33,5 +33,7 @@ dhcp-no-override
67  # by assigning IPs one by one instead of using hash algorithm.
68  dhcp-sequential-ip
69  
70 +dhcp-match=set:arm64,93,11
71 +dhcp-boot=net:arm64,grub/grub-aarch64.efi,boothost,<%= @next_server %>
72  dhcp-option=6,<%= @name_server %>
73  $insert_cobbler_system_definitions
74 diff --git a/deployment/puppet/cobbler/templates/efidefault.template.erb b/deployment/puppet/cobbler/templates/efidefault.template.erb
75 new file mode 100644
76 index 0000000..af09eb8
77 --- /dev/null
78 +++ b/deployment/puppet/cobbler/templates/efidefault.template.erb
79 @@ -0,0 +1,5 @@
80 +set default=1
81 +set timeout=5
82 +tr -s ipxe_mac ':' '-' $net_default_mac
83 +
84 +$grub_menu_items
85 diff --git a/deployment/puppet/cobbler/templates/grubprofile.template.erb b/deployment/puppet/cobbler/templates/grubprofile.template.erb
86 new file mode 100644
87 index 0000000..eb7557c
88 --- /dev/null
89 +++ b/deployment/puppet/cobbler/templates/grubprofile.template.erb
90 @@ -0,0 +1,12 @@
91 +menuentry '$profile_name' {
92 +    echo 'Network status:'
93 +    net_ls_cards
94 +    net_ls_addr
95 +    net_ls_routes
96 +
97 +    echo 'Loading Linux ...'
98 +    linux (tftp)$kernel_path $kernel_options BOOTIF=01-$ipxe_mac
99 +    echo 'Loading initial ramdisk ...'
100 +    initrd (tftp)$initrd_path
101 +    echo 'Booting bootstrap image ...'
102 +}
103 diff --git a/deployment/puppet/cobbler/templates/grubsystem.template.erb b/deployment/puppet/cobbler/templates/grubsystem.template.erb
104 new file mode 100644
105 index 0000000..9a191bc
106 --- /dev/null
107 +++ b/deployment/puppet/cobbler/templates/grubsystem.template.erb
108 @@ -0,0 +1,16 @@
109 +set default=1
110 +set timeout=5
111 +tr -s ipxe_mac ':' '-' $net_default_mac
112 +
113 +menuentry '$profile_name' {
114 +    echo 'Network status:'
115 +    net_ls_cards
116 +    net_ls_addr
117 +    net_ls_routes
118 +
119 +    echo 'Loading Linux ...'
120 +    linux (tftp)$kernel_path $kernel_options BOOTIF=01-$ipxe_mac
121 +    echo 'Loading initial ramdisk ...'
122 +    initrd (tftp)$initrd_path
123 +    echo 'Booting bootstrap image ...'
124 +}
125 diff --git a/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb b/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb
126 index fd6dda3..65c6c69 100644
127 --- a/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb
128 +++ b/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb
129 @@ -66,9 +66,11 @@ d-i apt-setup/mirror/error select Retry
130  # Use network mirror
131  d-i apt-setup/use_mirror boolean true
132  
133 +<% if @arch == 'amd64' %>
134  # Select architecture to amd64. That's very important to dpkg, since
135  # by default we have both amd64 and i386.
136  d-i apt-setup/multiarch string amd64
137 +<% end %>
138  
139  # You can choose to install restricted and universe software, or to install
140  # software from the backports repository.
141 diff --git a/deployment/puppet/nailgun/manifests/auxiliaryrepos.pp b/deployment/puppet/nailgun/manifests/auxiliaryrepos.pp
142 index 41a2570..720943d 100644
143 --- a/deployment/puppet/nailgun/manifests/auxiliaryrepos.pp
144 +++ b/deployment/puppet/nailgun/manifests/auxiliaryrepos.pp
145 @@ -48,17 +48,21 @@ class nailgun::auxiliaryrepos(
146  
147    exec { 'create_ubuntu_repo_dirs':
148      path    => '/bin:/sbin:/usr/bin:/usr/sbin',
149 -    command => "bash -c \"mkdir -p ${ubuntu_dir}/pool/{main,restricted} ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-amd64/\"",
150 +    command => "bash -c \"mkdir -p ${ubuntu_dir}/pool/{main,restricted} ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-{amd64,arm64}/\"",
151      unless => "test -d ${ubuntu_dir}/pool && \
152        test -d ${ubuntu_dir}/dists/auxiliary/main/binary-amd64 && \
153 -      test -d ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64",
154 +      test -d ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64 && \
155 +      test -d ${ubuntu_dir}/dists/auxiliary/main/binary-arm64 && \
156 +      test -d ${ubuntu_dir}/dists/auxiliary/restricted/binary-arm64",
157    }
158  
159    exec { 'create_ubuntu_repo_Packages':
160      path    => '/bin:/sbin:/usr/bin:/usr/sbin',
161 -    command => "bash -c \"touch ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-amd64/Packages\"",
162 +    command => "bash -c \"touch ${ubuntu_dir}/dists/auxiliary/{main,restricted}/binary-{amd64,arm64}/Packages\"",
163      unless  => "test -f ${ubuntu_dir}/dists/auxiliary/main/binary-amd64/Packages && \
164 -      test -f ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64/Packages",
165 +      test -f ${ubuntu_dir}/dists/auxiliary/restricted/binary-amd64/Packages && \
166 +      test -f ${ubuntu_dir}/dists/auxiliary/main/binary-arm64/Packages && \
167 +      test -f ${ubuntu_dir}/dists/auxiliary/restricted/binary-arm64/Packages",
168    }
169  
170    file { $release_files:
171 diff --git a/deployment/puppet/nailgun/manifests/cobbler.pp b/deployment/puppet/nailgun/manifests/cobbler.pp
172 index a11498c..95a9497 100644
173 --- a/deployment/puppet/nailgun/manifests/cobbler.pp
174 +++ b/deployment/puppet/nailgun/manifests/cobbler.pp
175 @@ -43,7 +43,7 @@ class nailgun::cobbler(
176    $bootstrap_profile = $bootstrap_flavor ? {
177      /(?i)centos/                 => 'bootstrap',
178      /(?i)ubuntu/                 => 'ubuntu_bootstrap',
179 -    default                      => 'bootstrap',
180 +    default                      => 'ubuntu_bootstrap',
181    }
182  
183    if $::osfamily == 'RedHat' {
184 @@ -133,12 +133,9 @@ class nailgun::cobbler(
185          require   => Class['::cobbler::server'],
186        }
187  
188 -      file { '/var/lib/cobbler/kickstarts/ubuntu-amd64.preseed':
189 -        content => template('cobbler/preseed/ubuntu-1404.preseed.erb'),
190 -        owner   => 'root',
191 -        group   => 'root',
192 -        mode    => '0644',
193 -        require => Class['::cobbler::server'],
194 +      nailgun::cobbler::preseed { 'ubuntu_1404_x86_64.preseed':
195 +        path =>'/var/lib/cobbler/kickstarts/ubuntu-amd64.preseed',
196 +        arch => "amd64",
197        } ->
198  
199        cobbler_distro { 'ubuntu_1404_x86_64':
200 @@ -151,6 +148,21 @@ class nailgun::cobbler(
201          require   => Class['::cobbler::server'],
202        }
203  
204 +      nailgun::cobbler::preseed { 'ubuntu_1404_arm64.preseed':
205 +        path => '/var/lib/cobbler/kickstarts/ubuntu-arm64.preseed',
206 +        arch => "arm64",
207 +      } ->
208 +
209 +      cobbler_distro { 'ubuntu_1404_arm64':
210 +        kernel    => "${repo_root}/ubuntu/x86_64/images/linux",
211 +        initrd    => "${repo_root}/ubuntu/x86_64/images/initrd.gz",
212 +        arch      => 'x86_64', # Makes Cobbler choose PXE
213 +        breed     => 'ubuntu',
214 +        osversion => 'trusty',
215 +        ksmeta    => '',
216 +        require   => Class['::cobbler::server'],
217 +      }
218 +
219        cobbler_profile { 'centos-x86_64':
220          kickstart => '/var/lib/cobbler/kickstarts/centos-x86_64.ks',
221          kopts     => 'biosdevname=0 sshd=1 dhcptimeout=120',
222 @@ -171,6 +183,16 @@ class nailgun::cobbler(
223          require   => Cobbler_distro['ubuntu_1404_x86_64'],
224        }
225  
226 +      cobbler_profile { 'ubuntu_1404_arm64':
227 +        kickstart => '/var/lib/cobbler/kickstarts/ubuntu-arm64.preseed',
228 +        kopts     => 'console=ttyAMA0,115200 console=ttyS0,115200 net.ifnames=0 biosdevname=0 netcfg/choose_interface=eth0 netcfg/dhcp_timeout=120 netcfg/link_detection_timeout=20',
229 +        distro    => 'ubuntu_1404_arm64',
230 +        ksmeta    => '',
231 +        menu      => false,
232 +        server    => $real_server,
233 +        require   => Cobbler_distro['ubuntu_1404_arm64'],
234 +      }
235 +
236        cobbler_distro { 'bootstrap':
237          kernel    => "${repo_root}/bootstrap/linux",
238          initrd    => "${repo_root}/bootstrap/initramfs.img",
239 @@ -205,7 +227,7 @@ class nailgun::cobbler(
240          distro    => 'ubuntu_bootstrap',
241          menu      => true,
242          kickstart => '',
243 -        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}"),
244 +        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}"),
245          ksmeta    => '',
246          server    => $real_server,
247          require   => Cobbler_distro['ubuntu_bootstrap'],
248 diff --git a/deployment/puppet/nailgun/manifests/cobbler/preseed.pp b/deployment/puppet/nailgun/manifests/cobbler/preseed.pp
249 new file mode 100644
250 index 0000000..93c71ba
251 --- /dev/null
252 +++ b/deployment/puppet/nailgun/manifests/cobbler/preseed.pp
253 @@ -0,0 +1,13 @@
254 +define nailgun::cobbler::preseed(
255 +  $path,
256 +  $arch = "amd64",
257 +) {
258 +
259 +  file { $path:
260 +    content => template('cobbler/preseed/ubuntu-1404.preseed.erb'),
261 +    owner   => 'root',
262 +    group   => 'root',
263 +    mode    => '0644',
264 +    require => Class['::cobbler::server'],
265 +  }
266 +}