cobbler: support deploying ubuntu on arm 89/55189/4
authorYibo Cai <yibo.cai@arm.com>
Wed, 4 Apr 2018 06:06:34 +0000 (14:06 +0800)
committerYibo Cai <yibo.cai@arm.com>
Mon, 16 Apr 2018 10:11:37 +0000 (10:11 +0000)
Deploy ubuntu by setting ADAPTER_OS_PATTERN='(?i)ubuntu-16.*arm.*' and
OS_VERSION=xenial.

Change-Id: I1035a2d45225fceab6eead35d77d98130def373b
Signed-off-by: Yibo Cai <yibo.cai@arm.com>
deploy/adapters/cobbler/kickstarts/default16-aarch64.seed [new file with mode: 0644]
deploy/adapters/cobbler/snippets/preseed_post_apt_repo_config
deploy/compass_conf/adapter/ansible_kubernetes.conf
util/docker-compose/group_vars/all
util/docker-compose/roles/cobbler/tasks/main.yml

diff --git a/deploy/adapters/cobbler/kickstarts/default16-aarch64.seed b/deploy/adapters/cobbler/kickstarts/default16-aarch64.seed
new file mode 100644 (file)
index 0000000..13dae5c
--- /dev/null
@@ -0,0 +1,160 @@
+# Mostly based on the Ubuntu installation guide
+# https://help.ubuntu.com/12.04/installation-guide/
+
+## Figure out if we're kickstarting a system or a profile
+#if $getVar('system_name','') != ''
+#set $what = "system"
+#else
+#set $what = "profile"
+#end if
+
+# Preseeding only locale sets language, country and locale.
+d-i debian-installer/locale string en_US
+d-i debian-installer/country string US
+d-i debian-installer/language string en
+
+d-i debian-installer/splash boolean false
+d-i debian-installer/quiet boolean false
+d-i debian-installer/framebuffer boolean true
+d-i hw-detect/load_firmware boolean true
+
+# Keyboard selection.
+# Disable automatic (interactive) keymap detection.
+d-i console-setup/ask_detect boolean false
+d-i console-setup/layoutcode string us
+d-i console-setup/modelcode string  SKIP
+d-i keyboard-configuration/variantcode string us
+d-i keyboard-configuration/layoutcode string us
+d-i keyboard-configuration/model    select  Generic 105-key (Intl) PC
+d-i console-keymaps-at/keymap   select  us
+d-i keyboard-configuration/xkb-keymap   select  us
+
+d-i preseed/early_command string \
+wget -O- \
+http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_early_default | /bin/sh -s; \
+debconf-set-selections /tmp/pre_install_network_config
+
+$SNIPPET('preseed_network_config')
+
+# Partition disk manually
+d-i partman-auto/disk string /dev/sda
+d-i partman-auto/method string regular
+d-i partman-lvm/device_remove_lvm boolean true
+d-i partman-md/device_remove_md boolean true
+d-i partman-auto/choose_recipe select atomic
+d-i partman/confirm_write_new_label boolean true
+d-i partman/choose_partition select finish
+d-i partman/confirm boolean true
+d-i partman/confirm_nooverwrite boolean true
+
+# NTP/Time Setup
+#if $getVar('timezone', '') != ""
+d-i time/zone string $timezone
+#else
+d-i time/zone string US/Pacific
+#end if
+d-i clock-setup/utc boolean true
+d-i clock-setup/ntp boolean true
+#if $getVar('ntp_server', '') == ""
+d-i clock-setup/ntp-server  string 0.ubuntu.pool.ntp.org
+#else
+d-i clock-setup/ntp-server  string $ntp_server
+#end if
+
+# Setup the installation source
+d-i mirror/country string manual
+d-i mirror/http/hostname string $http_server
+d-i mirror/http/directory string $install_source_directory
+d-i mirror/http/proxy string
+d-i mirror/http/mirror select $http_server
+d-i mirror/protocol select http
+d-i mirror/udeb/components multiselect main, restricted
+
+#set $os_v = $getVar('os_version','')
+#if $os_v and $os_v.lower()[0] > 'p'
+# Required at least for 12.10+
+d-i live-installer/net-image string http://$http_server/cobbler/ks_mirror/$distro_name/install/filesystem.squashfs
+#end if
+
+# root account and password
+#if $getVar('username', 'root') != "root"
+d-i passwd/root-login boolean false
+d-i passwd/make-user boolean true
+d-i user-setup/allow-password-weak boolean true
+d-i passwd/root-password password root
+d-i passwd/root-password-again password root
+    #set username = $getVar('username', 'root')
+d-i passwd/user-fullname string $username
+d-i passwd/username string $username
+    #if $getVar('password', '') != ""
+d-i passwd/user-password-crypted password $password
+    #else
+d-i passwd/user-password password $username
+d-i passwd/user-password-again password $username
+    #end if
+#else
+d-i passwd/root-login boolean true
+d-i passwd/make-user boolean false
+d-i user-setup/allow-password-weak boolean true
+    #if $getVar('password', '') != ""
+d-i passwd/root-password-crypted password $password
+    #else
+d-i passwd/root-password password root
+d-i passwd/root-password-again password root
+    #end if
+#end if
+
+$SNIPPET('preseed_apt_repo_config')
+
+# Individual additional packages to install
+# wget is REQUIRED otherwise quite a few things won't work
+# later in the build (like late-command scripts)
+#if $getVar('tool', '') != ''
+    #set $preseed_software = "preseed_software_%s" % $tool
+$SNIPPET($preseed_software)
+#else
+d-i pkgsel/include string ntp ssh openssh-server wget vim bridge-utils ifenslave vlan
+#end if
+
+# Whether to upgrade packages after debootstrap.
+# Allowed values: none, safe-upgrade, full-upgrade
+d-i pkgsel/upgrade select none
+d-i popularity-contest/participate boolean false
+d-i lilo-installer/skip boolean true
+d-i grub-installer/only_debian boolean true
+
+# Use the following option to add additional boot parameters for the
+# installed system (if supported by the bootloader installer).
+# Note: options passed to the installer will be added automatically.
+d-i debian-installer/add-kernel-opts string $kernel_options_post
+d-i debian-installer/allow_unauthenticated string true
+
+d-i finish-install/late_command string update-grub
+# Avoid that last message about the install being complete.
+d-i finish-install/reboot_in_progress note
+
+# This will prevent the installer from ejecting the CD during the reboot,
+# which is useful in some situations.
+d-i cdrom-detect/eject boolean false
+
+# This command is run just before the install finishes, but when there is
+# still a usable /target directory. You can chroot to /target and use it
+# directly, or use the apt-install and in-target commands to easily install
+# packages and run commands in the target system.
+# d-i preseed/late_command string [command]
+d-i preseed/late_command string \
+in-target sed -i '$a UseDNS no' /etc/ssh/sshd_config; \
+in-target sed -i 's/.*GSSAPIAuthentication.*/GSSAPIAuthentication no/g' /etc/ssh/sshd_config; \
+in-target sed -i '$d' /usr/share/initramfs-tools/scripts/local-top/lvm2; \
+in-target echo "lvm vgchange -ay" >> /usr/share/initramfs-tools/scripts/local-top/lvm2; \
+in-target echo "exit 0" >> /usr/share/initramfs-tools/scripts/local-top/lvm2; \
+in-target touch /etc/initramfs-tools/scripts/local-top/lvm2; \
+in-target chmod 777 /etc/initramfs-tools/scripts/local-top/lvm2; \
+in-target echo "vgchange -a y" >> /etc/initramfs-tools/scripts/local-top/lvm2; \
+wget -O- \
+   http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \
+   chroot /target /bin/sh -s; cp /target/etc/network/interfaces /etc/network/interfaces; \
+in-target update-initramfs -k `uname -r` -c; \
+in-target update-grub; \
+in-target apt-get install python2.7; \
+in-target ln -s /usr/bin/python2.7 /usr/bin/python
index 6ea56c5..591313b 100644 (file)
@@ -29,6 +29,8 @@ $SNIPPET($repos_snippet)
 
 #if $arch == "x86_64"
     #set $rarch = "[arch=amd64]"
+#elif $arch == "arm"
+    #set $rarch = "[arch=arm64]"
 #else
     #set $rarch = "[arch=%s]" % $arch
 #end if
index 70e5564..e2af8af 100644 (file)
@@ -3,5 +3,5 @@ DISPLAY_NAME = 'Kubernetes'
 PARENT = 'general'
 PACKAGE_INSTALLER = 'ansible_installer_kubernetes'
 OS_INSTALLER = 'cobbler'
-SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-16\.04\.3', '(?i)CentOS-7.*17.*', '(?i)CentOS-7.*arm.*']
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-16\.04\.3', '(?i)CentOS-7.*17.*', '(?i)CentOS-7.*arm.*', '(?i)ubuntu-16.*arm.*']
 DEPLOYABLE = True
index 920589c..8bdc57b 100755 (executable)
@@ -46,9 +46,9 @@ distros_x86_64:
 distros_aarch64:
   ubuntu-16.04:
     breed: "ubuntu"
-    kickstart: "default16.seed"
-    kopts: "netcfg/choose_interface=auto console=ttyS0 console=ttyAMA0 console=tty0 net.ifnames=0"
-    kopts_post: "console=ttyS0 console=ttyAMA0 console=tty0 net.ifnames=0"
+    kickstart: "default16-aarch64.seed"
+    kopts: "netcfg/choose_interface=auto console=ttyS0 console=ttyAMA0 net.ifnames=0"
+    kopts_post: "console=ttyS0 console=ttyAMA0 net.ifnames=0"
     extra: "--apt-dists=xenial --apt-components=main"
     aliase: "xenial"
     version: "ubuntu"
index 0a30e0c..e4e2cf3 100755 (executable)
     # - ubuntu-16.04-server-arm-arm64-arm
     # Kickstart meta url name
     # - http://x.x.x.x/cobbler/ks_mirror/CentOS-7-Minimal-1611-arm
-    # - http://x.x.x.x/cobbler/ks_mirror/ubuntu-16.04-server-arm-arm64
+    # - http://x.x.x.x/cobbler/ks_mirror/ubuntu-16.04-server-arm
     name="{{ item.value.cobbler_name }}-arm"
     profiles=`docker exec compass-cobbler bash -c \
               "cobbler profile list | grep $name"`
          --name $profile_name \
          --name-servers '' \
          --repos {{ item.value.ppa_name }} \
-         --ksmeta \"tree=http://{{ host_ip }}/cobbler/ks_mirror/${profile_name%????}\" \
+         --ksmeta \"tree=http://{{ host_ip }}/cobbler/ks_mirror/$name\" \
          --kopts \"{{ item.value.kopts | default('') }}\" \
          --kopts-post \"{{ item.value.kopts_post | default('') }}\""
     done