Add ability to override image config directory

Change-Id: I44fd0ec6cdc2a6e2d630a2b6fef479586e1fcb3e
This commit is contained in:
Anderson, Craig (ca846m) 2021-02-18 14:58:53 -08:00
parent 9096715f7a
commit c57d33c299
10 changed files with 47 additions and 9 deletions

1
.gitignore vendored
View File

@ -10,3 +10,4 @@ bootstrap_capo/capo-ephemeral
image-builder/config/*.iso image-builder/config/*.iso
image-builder/config/*.qcow2 image-builder/config/*.qcow2
image-builder/config/*.md5sum image-builder/config/*.md5sum
image-builder/assets/playbooks/roles/multistrap/vars/main.yaml

View File

@ -20,6 +20,7 @@
http: "" http: ""
https: "" https: ""
noproxy: "" noproxy: ""
image_config_dir: config
check: check:
jobs: jobs:
- airship-images-functional - airship-images-functional

View File

@ -40,6 +40,8 @@ help: ## This help.
images: build generate_iso package_qcow images: build generate_iso package_qcow
build: build:
# Apply any user-defined overrides to multistrap playbook
cp $(WORKDIR)/rootfs/multistrap-vars.yaml assets/playbooks/roles/multistrap/vars/main.yaml
ifneq ($(PROXY), ) ifneq ($(PROXY), )
sudo -E ./tools/docker_proxy.sh $(PROXY) $(NO_PROXY) sudo -E ./tools/docker_proxy.sh $(PROXY) $(NO_PROXY)
export http_proxy=$(PROXY) export http_proxy=$(PROXY)

View File

@ -0,0 +1,3 @@
Do not make updates here.
See image-builder/config/rootfs/multistrap-vars.yaml

View File

@ -42,6 +42,26 @@ limits:
type: 'hard' type: 'hard'
item: 'core' item: 'core'
value: 0 value: 0
- name: nofile-root-soft
domain: 'root'
type: 'soft'
item: 'nofile'
value: '65536'
- name: nofile-root-hard
domain: 'root'
type: 'hard'
item: 'nofile'
value: '1048576'
- name: nofile-all-soft
domain: '*'
type: 'soft'
item: 'nofile'
value: '65536'
- name: nofile-all-hard
domain: '*'
type: 'hard'
item: 'nofile'
value: '1048576'
sysctl: sysctl:
- name: net.bridge.bridge-nf-call-ip6tables - name: net.bridge.bridge-nf-call-ip6tables

View File

@ -1,9 +1,9 @@
# Overrides to the playbook default variables may be defined in this file. # Overrides to the multistrap playbook defaults may be defined in this file.
# #
# The following are examples that show you how to override variables. # The following are examples that show you how to override variables.
# #
# Example 1: The following usage will *overwrite* the list of repos & packages # Example 1: The following usage will *overwrite* the list of repos & packages
# defined under defaults/main.yaml with the list here: # defined under multistrap/defaults/main.yaml with the list here:
#repos: #repos:
# - register_repo_with_rootfs: true # - register_repo_with_rootfs: true
# name: Ubuntu # name: Ubuntu
@ -20,7 +20,7 @@
# everything, including the package list(s) for each mirror. # everything, including the package list(s) for each mirror.
# #
# Example 2: The following usage will *append* to the list of default repos # Example 2: The following usage will *append* to the list of default repos
# defined under defaults/main.yaml with the list here: # defined under multistrap/defaults/main.yaml with the list here:
#repos_append: #repos_append:
# - register_repo_with_rootfs: true # - register_repo_with_rootfs: true
# name: DellUtilsRepo # name: DellUtilsRepo
@ -38,7 +38,8 @@
# the community Ubuntu mirrors. # the community Ubuntu mirrors.
# #
# Example 3: The following usage will *append* to the list of default packages # Example 3: The following usage will *append* to the list of default packages
# installed from the default Ubuntu mirror defined in defaults/main.yaml: # installed from the default Ubuntu mirror defined in
# multistrap/defaults/main.yaml:
#ubuntu_packages_append: #ubuntu_packages_append:
# - package1 # - package1
# - package2 # - package2

View File

@ -45,7 +45,10 @@ install_pkg(){
dpkg -l $1 2> /dev/null | grep ^ii > /dev/null || sudo -E apt-get -y install $1 dpkg -l $1 2> /dev/null | grep ^ii > /dev/null || sudo -E apt-get -y install $1
} }
sudo -E apt -y update if [ ! -f /var/lib/apt/periodic/update-success-stamp ] || \
sudo find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp; then
sudo -E apt -y update
fi
install_pkg qemu-kvm install_pkg qemu-kvm
install_pkg virtinst install_pkg virtinst
@ -110,9 +113,9 @@ outputFileName: $img_name" > ${qcow_config}
--env NO_PROXY=$noproxy \ --env NO_PROXY=$noproxy \
${image} < ${qcow_config} ${image} < ${qcow_config}
cloud_init_config_dir='assets/tests/qcow/cloud-init' cloud_init_config_dir='assets/tests/qcow/cloud-init'
sudo -E cloud-localds -v --network-config="${cloud_init_config_dir}/network-config" "${workdir}/airship-ubuntu_config.iso" "${cloud_init_config_dir}/user-data" "${cloud_init_config_dir}/meta-data" sudo -E cloud-localds -v --network-config="${cloud_init_config_dir}/network-config" "${workdir}/${img_name}_config.iso" "${cloud_init_config_dir}/user-data" "${cloud_init_config_dir}/meta-data"
disk1="--disk path=${workdir}/${img_name}" disk1="--disk path=${workdir}/${img_name}"
disk2="--disk path=${workdir}/airship-ubuntu_config.iso,device=cdrom" disk2="--disk path=${workdir}/${img_name}_config.iso,device=cdrom"
else else
echo Unknown build type: $build_type, exiting. echo Unknown build type: $build_type, exiting.
exit 1 exit 1

View File

@ -44,7 +44,10 @@ umount_chroot(){
} }
# Install pre-requisites # Install pre-requisites
sudo -E apt -y update if [ ! -f /var/lib/apt/periodic/update-success-stamp ] || \
sudo find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp; then
sudo -E apt -y update
fi
install_pkg efivar install_pkg efivar
# required for building UEFI image # required for building UEFI image
@ -73,7 +76,9 @@ pip3 show ansible >& /dev/null || sudo -E pip3 install --upgrade ansible
if [[ $1 = clean ]]; then if [[ $1 = clean ]]; then
umount_chroot umount_chroot
sudo chattr -i $build_dir/etc/kernel/postinst.d/kdump-tools if [ -f $build_dir/etc/kernel/postinst.d/kdump-tools ]; then
sudo chattr -i $build_dir/etc/kernel/postinst.d/kdump-tools
fi
if [[ -d $build_dir ]]; then if [[ -d $build_dir ]]; then
sudo rm -rf $build_dir sudo rm -rf $build_dir
fi fi

View File

@ -38,4 +38,5 @@
params: params:
COMMIT: "{{ zuul.newrev | default('') }}" COMMIT: "{{ zuul.newrev | default('') }}"
PUSH_IMAGE: "false" PUSH_IMAGE: "false"
WORKDIR: "{{ image_config_dir | default('config') }}"
become: True become: True

View File

@ -43,4 +43,5 @@
DOCKER_REGISTRY: "{{ docker_registry }}" DOCKER_REGISTRY: "{{ docker_registry }}"
GCP_SDK: "{{ gcp_sdk }}" GCP_SDK: "{{ gcp_sdk }}"
AZ_SDK: "{{ az_sdk }}" AZ_SDK: "{{ az_sdk }}"
WORKDIR: "{{ image_config_dir | default('config') }}"
become: True become: True