Merge "Backport git based patching from Fuel@OPNFV."
[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/fuel/manifests/auxiliaryrepos.pp        | 12 ++++---
16  deployment/puppet/fuel/manifests/cobbler.pp        | 38 +++++++++++++++++-----
17  .../puppet/fuel/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/fuel/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/fuel/manifests/auxiliaryrepos.pp b/deployment/puppet/fuel/manifests/auxiliaryrepos.pp
142 index 41a2570..720943d 100644
143 --- a/deployment/puppet/fuel/manifests/auxiliaryrepos.pp
144 +++ b/deployment/puppet/fuel/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/fuel/manifests/cobbler.pp b/deployment/puppet/fuel/manifests/cobbler.pp
172 index a11498c..95a9497 100644
173 --- a/deployment/puppet/fuel/manifests/cobbler.pp
174 +++ b/deployment/puppet/fuel/manifests/cobbler.pp
175 @@ -133,12 +133,9 @@ class nailgun::cobbler(
176      require   => Class['::cobbler::server'],
177    }
178  
179 -  file { '/var/lib/cobbler/kickstarts/ubuntu-amd64.preseed':
180 -    content => template('cobbler/preseed/ubuntu-1404.preseed.erb'),
181 -    owner   => 'root',
182 -    group   => 'root',
183 -    mode    => '0644',
184 -    require => Class['::cobbler::server'],
185 +  fuel::cobbler::preseed { 'ubuntu_1404_x86_64.preseed':
186 +    path =>'/var/lib/cobbler/kickstarts/ubuntu-amd64.preseed',
187 +    arch => "amd64",
188    } ->
189  
190    cobbler_distro { 'ubuntu_1404_x86_64':
191 @@ -151,6 +148,21 @@ class nailgun::cobbler(
192      require   => Class['::cobbler::server'],
193    }
194
195 +  fuel::cobbler::preseed { 'ubuntu_1404_arm64.preseed':
196 +    path => '/var/lib/cobbler/kickstarts/ubuntu-arm64.preseed',
197 +    arch => "arm64",
198 +  } ->
199 +
200 +  cobbler_distro { 'ubuntu_1404_arm64':
201 +    kernel    => "${repo_root}/ubuntu/x86_64/images/linux",
202 +    initrd    => "${repo_root}/ubuntu/x86_64/images/initrd.gz",
203 +    arch      => 'x86_64', # Makes Cobbler choose PXE
204 +    breed     => 'ubuntu',
205 +    osversion => 'trusty',
206 +    ksmeta    => '',
207 +    require   => Class['::cobbler::server'],
208 +  }
209 +
210    cobbler_profile { 'centos-x86_64':
211      kickstart => '/var/lib/cobbler/kickstarts/centos-x86_64.ks',
212      kopts     => 'biosdevname=0 sshd=1 dhcptimeout=120',
213 @@ -171,6 +183,16 @@ class nailgun::cobbler(
214      require   => Cobbler_distro['ubuntu_1404_x86_64'],
215    }
216  
217 +  cobbler_profile { 'ubuntu_1404_arm64':
218 +    kickstart => '/var/lib/cobbler/kickstarts/ubuntu-arm64.preseed',
219 +    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',
220 +    distro    => 'ubuntu_1404_arm64',
221 +    ksmeta    => '',
222 +    menu      => false,
223 +    server    => $real_server,
224 +    require   => Cobbler_distro['ubuntu_1404_arm64'],
225 +  }
226 +
227    cobbler_distro { 'ubuntu_bootstrap':
228      kernel    => "${bootstrap_path}/vmlinuz",
229      initrd    => "${bootstrap_path}/initrd.img",
230 @@ -205,7 +227,7 @@ class nailgun::cobbler(
231      distro    => 'ubuntu_bootstrap',
232      menu      => true,
233      kickstart => '',
234 -    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"),
235 +    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"),
236      ksmeta    => '',
237      server    => $real_server,
238      require   => Cobbler_distro['ubuntu_bootstrap'],
239 diff --git a/deployment/puppet/fuel/manifests/cobbler/preseed.pp b/deployment/puppet/fuel/manifests/cobbler/preseed.pp
240 new file mode 100644
241 index 0000000..93c71ba
242 --- /dev/null
243 +++ b/deployment/puppet/fuel/manifests/cobbler/preseed.pp
244 @@ -0,0 +1,13 @@
245 +define fuel::cobbler::preseed(
246 +  $path,
247 +  $arch = "amd64",
248 +) {
249 +
250 +  file { $path:
251 +    content => template('cobbler/preseed/ubuntu-1404.preseed.erb'),
252 +    owner   => 'root',
253 +    group   => 'root',
254 +    mode    => '0644',
255 +    require => Class['::cobbler::server'],
256 +  }
257 +}