The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxc-ci/pull/54
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) ===
From 0b51afdc09f1760d18ba3fe42ac1cee3477fe27c Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Thu, 8 Aug 2019 14:02:33 +0200 Subject: [PATCH 1/2] images: Add cloud images Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- images/centos-cloud.yaml | 408 ++++++++++++++++++++++++++++++++++++++ images/fedora-cloud.yaml | 115 +++++++++++ images/gentoo-cloud.yaml | 392 ++++++++++++++++++++++++++++++++++++ images/oracle-cloud.yaml | 167 ++++++++++++++++ images/sabayon-cloud.yaml | 116 +++++++++++ images/ubuntu-cloud.yaml | 403 +++++++++++++++++++++++++++++++++++++ 6 files changed, 1601 insertions(+) create mode 100644 images/centos-cloud.yaml create mode 100644 images/fedora-cloud.yaml create mode 100644 images/gentoo-cloud.yaml create mode 100644 images/oracle-cloud.yaml create mode 100644 images/sabayon-cloud.yaml create mode 100644 images/ubuntu-cloud.yaml diff --git a/images/centos-cloud.yaml b/images/centos-cloud.yaml new file mode 100644 index 0000000..e3cab89 --- /dev/null +++ b/images/centos-cloud.yaml @@ -0,0 +1,408 @@ +image: + distribution: centos + +source: + downloader: centos-http + url: http://centos.mirror.iweb.ca + keys: + # 0x6341AB2753D78A78A7C27BB124C6A8A7F4A80EB5 + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + 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 + ceEtRuCZ+Q== + =TDE8 + -----END PGP PUBLIC KEY BLOCK----- + + # 0xC1DAC52D1664E8A4386DBA430946FCA2C105B9DE + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + 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 + ykI0UftbiVfOow== + =zBxo + -----END PGP PUBLIC KEY BLOCK----- + + variant: minimal + +targets: + lxc: + create-message: | + You just created a {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/centos.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/centos.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_kernel }} + +files: + - name: hostname + path: /etc/hostname + generator: hostname + + - name: hosts + path: /etc/hosts + generator: hosts + + - name: ifcfg-eth0 + path: /etc/sysconfig/network-scripts/ifcfg-eth0 + generator: dump + templated: true + content: |- + DEVICE=eth0 + BOOTPROTO=dhcp + ONBOOT=yes + HOSTNAME=LXC_NAME + NM_CONTROLLED=no + TYPE=Ethernet + MTU= + DHCP_HOSTNAME=`hostname` + + - name: network + path: /etc/sysconfig/network + generator: dump + templated: true + content: |- + NETWORKING=yes + HOSTNAME=LXC_NAME + + - name: ifcfg-eth0.lxd + path: /etc/sysconfig/network-scripts/ifcfg-eth0 + generator: template + content: |- + DEVICE=eth0 + BOOTPROTO=dhcp + ONBOOT=yes + HOSTNAME={{ container.name }} + NM_CONTROLLED=no + TYPE=Ethernet + MTU= + DHCP_HOSTNAME=`hostname` + + - name: network.lxd + path: /etc/sysconfig/network + generator: template + content: |- + NETWORKING=yes + HOSTNAME={{ container.name }} + + - name: lxc-sysinit + path: /etc/init/lxc-sysinit.conf + generator: dump + content: |- + start on startup + env container + + pre-start script + if [ "x$container" != "xlxc" -a "x$container" != "xlibvirt" ]; then + stop; + fi + + rm -f /var/lock/subsys/* + rm -f /var/run/*.pid + [ -e /etc/mtab ] || ln -s /proc/mounts /etc/mtab + mkdir -p /dev/shm + mount -t tmpfs -o nosuid,nodev tmpfs /dev/shm + + initctl start tty TTY=console + telinit 3 + exit 0 + end script + releases: + - 6 + + - name: sigpwr.conf + path: /etc/init/power-status-changed.conf + generator: dump + content: |- + start on power-status-changed + + exec /sbin/shutdown -h now "SIGPWR received" + releases: + - 6 + + - name: meta-data + generator: cloud-init + + - name: network-config + generator: cloud-init + + - name: user-data + generator: cloud-init + + - name: vendor-data + generator: cloud-init + +packages: + manager: yum + update: true + cleanup: true + + sets: + - packages: + - cloud-init + - cronie + - cronie-noanacron + - curl + - dhclient + - initscripts + - openssh-clients + - passwd + - policycoreutils + - rootfiles + - rsyslog + - vim-minimal + action: install + +actions: + - trigger: post-packages + action: |- + #!/bin/sh + set -eux + + # Disable SELinux + mkdir -p /selinux + echo 0 > /selinux/enforce + + # Disable loginuid in PAM stack + sed -i '/^session.*pam_loginuid.so/s/^session/# session/' /etc/pam.d/* diff --git a/images/fedora-cloud.yaml b/images/fedora-cloud.yaml new file mode 100644 index 0000000..ead7477 --- /dev/null +++ b/images/fedora-cloud.yaml @@ -0,0 +1,115 @@ +image: + distribution: fedora + +source: + downloader: fedora-http + url: https://kojipkgs.fedoraproject.org + +targets: + lxc: + create-message: | + You just created a {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/fedora.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/fedora.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_kernel }} + +files: + - path: /etc/hostname + generator: hostname + + - path: /etc/hosts + generator: hosts + + - name: eth0.network + path: /etc/systemd/network/eth0.network + generator: dump + content: |- + [Match] + Name=eth0 + + [Network] + DHCP=ipv4 + + - name: meta-data + generator: cloud-init + + - name: network-config + generator: cloud-init + + - name: user-data + generator: cloud-init + + - name: vendor-data + generator: cloud-init + +packages: + manager: dnf + update: true + cleanup: true + + sets: + - packages: + - cloud-init + - cpio + - dhcp-client + - file + - findutils + - fipscheck + - gettext + - glibc-all-langpacks + - hardlink + - initscripts + - ipcalc + - iproute + - iproute-tc + - iputils + - kbd + - kmod + - openssh-clients + - passwd + - pigz + - policycoreutils + - procps-ng + - systemd-udev + - which + - xz + action: install + + - packages: + - libsss_idmap + - libsss_nss_idmap + - sssd-client + action: remove + +actions: + - trigger: post-packages + action: |- + #!/bin/sh + umount -l /etc/resolv.conf || true + rm /etc/resolv.conf + ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf + systemctl enable systemd-networkd + systemctl enable systemd-resolved + cp -R /etc/skel/.bash* /root/ diff --git a/images/gentoo-cloud.yaml b/images/gentoo-cloud.yaml new file mode 100644 index 0000000..f3269cd --- /dev/null +++ b/images/gentoo-cloud.yaml @@ -0,0 +1,392 @@ +image: + distribution: gentoo + +source: + downloader: gentoo-http + url: https://mirror.csclub.uwaterloo.ca/gentoo-distfiles + keys: + # 0x13EBBDBEDE7A12775DFDB1BABB572E0E2D182910 + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + mQINBEqUWzgBEACXftaG+HVuSQBEqdpBIg2SOVgWW/KbCihO5wPOsdbM93e+psmb + wvw+OtNHADQvxocKMuZX8Q/j5i3nQ/ikQFW5Oj6UXvl1qyxZhR2P7GZSNQxn0eMI + zAX08o691ws2/dFGXKmNT6btYJ0FxuTtTVSK6zi68WF+ILGK/O2TZXK9EKfZKPDH + KHcGrUq4c03vcGANz/8ksJj2ZYEGxMr1h7Wfe9PVcm0gCB1MhYHNR755M47V5Pch + fyxbs6vaKz82PgrNjjjbT0PISvnKReUOdA2PFUWry6UKQkiVrLVDRkd8fryLL8ey + 5JxgVoJZ4echoVWQ0JYJ5lJTWmcZyxQYSAbz2w9dLB+dPyyGpyPp1KX1ADukbROp + 9S11I9+oVnyGdUBm+AUme0ecekWvt4qiCw3azghLSwEyGZc4a8nNcwSqFmH7Rqdd + 1+gHc+4tu4WHmguhMviifGXKyWiRERULp0obV33JEo/c4uwyAZHBTJtKtVaLb92z + aRdh1yox2I85iumyt62lq9dfOuet4NNVDnUkqMYCQD23JB8IM+qnVaDwJ6oCSIKi + nY3uyoqbVE6Lkm+Hk5q5pbvg1cpEH6HWWAl20EMCzMOoMcH0tPyQLDlD2Mml7veG + kwdy3S6RkjCympbNzqWec2+hkU2c93Bgpfh7QP0GDN0qrzcNNFmrD5795QARAQAB + tFNHZW50b28gTGludXggUmVsZWFzZSBFbmdpbmVlcmluZyAoQXV0b21hdGVkIFdl + ZWtseSBSZWxlYXNlIEtleSkgPHJlbGVuZ0BnZW50b28ub3JnPoheBBARCAAGBQJR + yaWCAAoJELP3uHLZaXat08sA/3paxuDydIV/8qe9PzgID6zifip9T9XfTDCRbHQR + Kw0xAP9vTE9yoPuNMrF55AP9+68FbYaIO0sUxNN9CVby28iU7IkBHAQQAQIABgUC + Ut9qEwAKCRAvJnjSPF2apBtSCACIPmfvwiBluwx1dz4/C4pUSIZmaRk5NrKhuADL + CBUyH4X/Ajz4MhvXjAYeWpvtzxHW5sJL0mnNBQtkEM3SPGrYsJLCmhp0hW0lfYtq + pG8Kymej7N7CJMYKW65HTvlLyCM1JpBy3OAXBgtxNIeho+dXbXTBPAUCje2MVS8h + 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 + jTsu2yrgfAlRBAIer9m6c0dtjIJnqnXByNhv11XdiH3rIURCJcKkZIBgMcosun3b + MK9hHYQ+A2dvLbWIG4W67xDufYpzmRx8pLepfQa6FHgD/5a1AJ93fQrkkd0gaDbN + t0H/DvQZqLaxaZHKtCVO7JZwPvxw4ttSjq6MW8v78I1D9i/WC53rvUeFTiChm7xt + CMzXr08g51Xu/t3q0oOtaHhCHYGOiQI7BBMBAgAlBQJKlFs5AhsDBQkHhM4ABgsJ + CAcDAgQVAggDAxYCAQIeAQIXgAAKCRC7Vy4OLRgpEBavEACN6PjhMdn3gv9Ee6s1 + 3ugDZARHVwxiBS2IIFarTj0tvwtX2GHme8u0AgQ8u1hhGIp/JvnUi8LylTTnxyoW + eTS7kU7Lwv08pX0uI6MrGfTblRQoKWZQKGcTZ3b3Qj2l9EXUHIA0ZBj/RPPaqq4J + QAjiQ3Ng2hCitpUNuMCvcMJtJSgBzbN3eas/U0Nj6KQR//////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + /////////////////////////4kCUgQTAQIAPAIbAwYLCQgHAwIEFQIIAwMWAgEC + HgECF4AWIQQT672+3noSd139sbq7Vy4OLRgpEAUCWZxJ3wUJEspVpwAKCRC7Vy4O + LRgpEBGvD/0RfgZz9fObSxYAJWEm1HFjIKtr2jhD9m0YllYhv6JhU21RnlqEb5DR + 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 + x/lOXD+10MmvH+jr/F6q7R7kVl/n2WDZq5S6iOWvFjxuoSEt/nklunw+Vv80m5M/ + giW+qCpdM9QgrL3NxCRrm3z5wNSbliYsd7Cuv0X2G7HGAgm5uQENBFxxNVIBCACr + rx8QDtOErLrjh8U33d+hn/dzTHhm2O+jOBz/xT/FQh4Mku93kWZ5gLpv4nHkNfVI + CrhlAdEjcDs1HkVJlTnHjj5qL1Vw6SV6AMIKbhBB5Fa+F8T44AHqtOE44ogR3TUg + IDiMGHGQ+i0LjyRM+HZ0/167uNEiYOg4OHsM49YN86d8jmJKsDLAU4ZtgR72HXcs + bLNYUE4Jg1LLMbjPbIRrNk3GygMAgs7bYT4LEM5/SP6IAqDF5v0J48MPtfBg1+4W + nGE5T6i54fssnro5gCSY1c+lmuw+OANmNCKiKBd5cI4aODiULURHQc6uzF/BA2qo + rEj4erEEzbMKIMlSQfsXABEBAAGJA9IEGAEKACYCGwIWIQQT672+3noSd139sbq7 + Vy4OLRgpEAUCXMRr8gUJAospTgGgwNQgBBkBCgB9FiEEU05CCatJ7uHBnZYWLERp + Xbn2BD0FAlxxNVJfFIAAAAAALgAoaXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBn + cC5maWZ0aGhvcnNlbWFuLm5ldDUzNEU0MjA5QUI0OUVFRTFDMTlEOTYxNjJDNDQ2 + OTVEQjlGNjA0M0QACgkQLERpXbn2BD0uPwf/fqcGR7LdbXx70uk6nw1I63D4sc24 + eWuZPROGmZpkiOafUbRUYsrNSWOauD9cvCETbxke5hLBciUEYx1OTUh/FZr1qCcS + 2JUtrpwOJCqzeMVrpCKhur+iWQjM3yw/mQDc0BgJRyYH/t1zDSz8VZSzI5Iqx5RZ + QQdDB9/Fl4j22uy4xO3nSGbTGHzLLrSNY90jO5jlX4Lczxh0/uhhLWX/05rSp/qd + ua/6koirgP3NC5NRoKAvrc3JztzZCu1jVwi41PFsZgwGt/8w4+fPGGHTRxCHtKyt + XZpS4yn5JXzwf+idjD+JiJURcNGBotbxpljupMBbelLSxD6djlgPKjaCQgkQu1cu + Di0YKRCXzg//TKZrljYXymdJKjFeRBfMCj7Jg0zeo/rYRJUIj4ZTqkL3mDoYB+yQ + 2qgqH/0egketlkTCfoQRNsAo8GIdyCm+o0AU1n5x4mrLeglJb6h2WwmjGW00kbGf + G0CfBobD8b4UHTLnTcQ9xz4riH0TRJR7p3cEH116hcgfF4IXWjn7lRZEmUw/xDex + fX/LO8uttBM33EOHVAdxcq9uZuCFPhsmAkLhfoNnTXdCS83YTWPn43DvhoyIbfQS + ZcS+YL6AthfybtcTKOOBGoR1vWRYOjbHwPxeiEhl7gQbp3aGndcjmL71KcSSybv2 + 2R2/ifi5UrcyGPFuBpxmtyGwMFFU6sDtkc7PUIvmCZgOho1BVdm+zUWbZHe/j5Wu + h5CLPECJiMvk9clZWxUNN0p3nEnfZ0ulj4mcDnWHv1fiwlAwqOqWgse2RSB0Q+VW + 2+HTgaGIQqgL28rvINw5CBOIw+LtMSTYtPb4zK/eVlfO/4U/DmF9JVYu7OgYojnr + OFm9a6OolvUoeT6r0FOgP9efznlSzEq59amY6DigAYzygwWanEGto1GYIy35GoC3 + XcqC8kUGL+wv3WE1Os6RfAJlpWf1/rt1cFUzOBeZFAEuEfKbgNxXBx8xogrg1CrN + WzpmZk4pw+O/jdpJkdFxphpg6hbFdqpzMvvKq7jBvrunAxffXYAF2lY= + =T+GL + -----END PGP PUBLIC KEY BLOCK----- + +targets: + lxc: + create-message: | + You just created an {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/gentoo.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/gentoo.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_kernel }} + +files: + - name: hostname + path: /etc/hostname + generator: hostname + + - name: conf-hostname + path: /etc/conf.d/hostname + generator: hostname + + - name: hosts + path: /etc/hosts + generator: hosts + + - name: conf-net + path: /etc/conf.d/net + generator: dump + content: |- + rc_keyword="-stop" + config_eth0="dhcp" + + - name: meta-data + generator: cloud-init + + - name: network-config + generator: cloud-init + + - name: user-data + generator: cloud-init + + - name: vendor-data + generator: cloud-init + +packages: + manager: portage + update: false + cleanup: true + + sets: + - packages: + - cloud-init + action: install + +actions: + - trigger: post-unpack + action: |- + #!/bin/sh + set -eux + mv /usr/bin/gpg2 /usr/bin/gpg2.real + echo "#!/bin/sh" > /usr/bin/gpg2 + echo "exec /usr/bin/gpg2.real --keyserver keyserver.ubuntu.com \"\$@\"" >> /usr/bin/gpg2 + chmod +x /usr/bin/gpg2 + sed -i 's/^c[0-9]:/#\0/' /etc/inittab + sed -i 's/^#\(x1:.*\)/\1/' etc/inittab + echo pf:12345:powerwait:/sbin/halt >> /etc/inittab + + - trigger: post-packages + action: |- + #!/bin/sh + set -eux + ln -s net.lo /etc/init.d/net.eth0 + mkdir -p /etc/runlevels/default + rc-update add net.eth0 default + + rm /usr/bin/gpg2 + mv /usr/bin/gpg2.real /usr/bin/gpg2 + +mappings: + architecture_map: gentoo diff --git a/images/oracle-cloud.yaml b/images/oracle-cloud.yaml new file mode 100644 index 0000000..b9de9b3 --- /dev/null +++ b/images/oracle-cloud.yaml @@ -0,0 +1,167 @@ +image: + distribution: oracle + +source: + downloader: oraclelinux-http + url: https://mirrors.kernel.org/oracle + +targets: + lxc: + create-message: | + You just created a {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/centos.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/centos.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_kernel }} + +files: + - name: hostname + path: /etc/hostname + generator: hostname + + - name: hosts + path: /etc/hosts + generator: hosts + + - name: ifcfg-eth0 + path: /etc/sysconfig/network-scripts/ifcfg-eth0 + generator: dump + templated: true + content: |- + DEVICE=eth0 + BOOTPROTO=dhcp + ONBOOT=yes + HOSTNAME=LXC_NAME + NM_CONTROLLED=no + TYPE=Ethernet + MTU= + DHCP_HOSTNAME=`hostname` + + - name: network + path: /etc/sysconfig/network + generator: dump + templated: true + content: |- + NETWORKING=yes + HOSTNAME=LXC_NAME + + - name: ifcfg-eth0.lxd + path: /etc/sysconfig/network-scripts/ifcfg-eth0 + generator: template + content: |- + DEVICE=eth0 + BOOTPROTO=dhcp + ONBOOT=yes + HOSTNAME={{ container.name }} + NM_CONTROLLED=no + TYPE=Ethernet + MTU= + DHCP_HOSTNAME=`hostname` + + - name: network.lxd + path: /etc/sysconfig/network + generator: template + content: |- + NETWORKING=yes + HOSTNAME={{ container.name }} + + - name: lxc-sysinit + path: /etc/init/lxc-sysinit.conf + generator: dump + content: |- + start on startup + env container + + pre-start script + if [ "x$container" != "xlxc" -a "x$container" != "xlibvirt" ]; then + stop; + fi + + rm -f /var/lock/subsys/* + rm -f /var/run/*.pid + [ -e /etc/mtab ] || ln -s /proc/mounts /etc/mtab + mkdir -p /dev/shm + mount -t tmpfs -o nosuid,nodev tmpfs /dev/shm + + initctl start tty TTY=console + telinit 3 + exit 0 + end script + releases: + - 6 + + - name: sigpwr.conf + path: /etc/init/power-status-changed.conf + generator: dump + content: |- + start on power-status-changed + + exec /sbin/shutdown -h now "SIGPWR received" + releases: + - 6 + + - name: meta-data + generator: cloud-init + + - name: network-config + generator: cloud-init + + - name: user-data + generator: cloud-init + + - name: vendor-data + generator: cloud-init + +packages: + manager: yum + update: true + cleanup: true + + sets: + - packages: + - cloud-init + - curl + - dhclient + - initscripts + - openssh-clients + - passwd + - policycoreutils + - rootfiles + - rsyslog + - tcp_wrappers-libs + - vim-minimal + action: install + +actions: + - trigger: post-packages + action: |- + #!/bin/sh + set -eux + + # Disable SELinux + mkdir -p /selinux + echo 0 > /selinux/enforce + + # Disable loginuid in PAM stack + sed -i '/^session.*pam_loginuid.so/s/^session/# session/' /etc/pam.d/* diff --git a/images/sabayon-cloud.yaml b/images/sabayon-cloud.yaml new file mode 100644 index 0000000..c15f271 --- /dev/null +++ b/images/sabayon-cloud.yaml @@ -0,0 +1,116 @@ +image: + distribution: sabayon + +source: + downloader: sabayon-http + url: http://dl.sabayon.org/sbi/sabayon%3Aiso/iso + +environment: + clear_defaults: true + variables: + - key: "SHELL" + value: "/bin/bash" + - key: "ACCEPT_LICENSE" + value: "*" + +targets: + lxc: + create-message: | + You just created an {{ image.description }} container. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/sabayon.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/sabayon.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_kernel }} + +files: + - path: /etc/hostname + generator: hostname + + - path: /etc/hosts + generator: hosts + + - path: /etc/systemd/system/systemd-sysctl.service.d/00gentoo.conf + generator: dump + content: |- + [Service] + ExecStart= + ExecStart=/usr/lib/systemd/systemd-sysctl --prefix=/etc/sysctl.d/ + + - path: /etc/systemd/system/NetworkManager.service.d/override.conf + generator: dump + content: |- + [Service] + ExecStartPre=-/bin/ip -4 link set dev eth0 down + + - name: meta-data + generator: cloud-init + + - name: network-config + generator: cloud-init + + - name: user-data + generator: cloud-init + + - name: vendor-data + generator: cloud-init + +packages: + manager: equo + update: false + cleanup: true + + sets: + - packages: + - cloud-init + action: install + +actions: + - trigger: post-packages + action: |- + #!/bin/sh + + # Disable problematic systemd units + ln -s /dev/null /etc/systemd/system/systemd-journald-audit.socket + ln -s /dev/null /etc/systemd/system/systemd-remount-fs.service + ln -s /dev/null /etc/systemd/system/sys-fs-fuse-connections.mount + ln -s /dev/null /etc/systemd/system/dev-hugepages.mount + + # Disable sabayon-anti-fork-bomb limits + sed -i -e 's/^*/#*/g' /etc/security/limits.d/00-sabayon-anti-fork-bomb.conf + sed -i -e 's/^root/#root/g' /etc/security/limits.d/00-sabayon-anti-fork-bomb.conf + + # Clean journal directory (to avoid permission errors) + rm -rf /var/log/journal/ + + # Remove LVM service. Normally not needed on container system. + rm -rf /etc/systemd/system/sysinit.target.wants/lvm2-lvmetad.service + + # Comment unneeded entry on /etc/fstab + sed -e 's/\/dev/#\/dev/g' -i /etc/fstab + + # Create some potentially missing directory + mkdir -p /etc/local.d + +mappings: + architecture_map: debian diff --git a/images/ubuntu-cloud.yaml b/images/ubuntu-cloud.yaml new file mode 100644 index 0000000..906e861 --- /dev/null +++ b/images/ubuntu-cloud.yaml @@ -0,0 +1,403 @@ +image: + distribution: "ubuntu" + +source: + downloader: debootstrap + same_as: gutsy + url: http://archive.ubuntu.com/ubuntu + keys: + # 0x790BC7277767219C42C86F933B4FE6ACC0B21F32 + - |- + -----BEGIN PGP PUBLIC KEY BLOCK----- + + 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 + =384X + -----END PGP PUBLIC KEY BLOCK----- + + apt_sources: |- + {% if image.architecture_mapped == "amd64" or image.architecture_mapped == "i386" %}deb http://archive.ubuntu.com/ubuntu {{ image.release }} main restricted universe multiverse + deb http://archive.ubuntu.com/ubuntu {{ image.release }}-updates main restricted universe multiverse + deb http://security.ubuntu.com/ubuntu {{ image.release }}-security main restricted universe multiverse + {% else %}deb http://ports.ubuntu.com/ubuntu-ports {{ image.release }} main restricted universe multiverse + deb http://ports.ubuntu.com/ubuntu-ports {{ image.release }}-updates main restricted universe multiverse + deb http://ports.ubuntu.com/ubuntu-ports {{ image.release }}-security main restricted universe multiverse + {% endif %} + +targets: + lxc: + create-message: |- + You just created an {{ image.description }} container. + + To enable SSH, run: apt install openssh-server + No default root or user password are set by LXC. + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/ubuntu.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/ubuntu.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + # For Ubuntu 14.04 + lxc.mount.entry = /sys/kernel/debug sys/kernel/debug none bind,optional 0 0 + lxc.mount.entry = /sys/kernel/security sys/kernel/security none bind,optional 0 0 + lxc.mount.entry = /sys/fs/pstore sys/fs/pstore none bind,optional 0 0 + lxc.mount.entry = mqueue dev/mqueue mqueue rw,relatime,create=dir,optional 0 0 + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + # For Ubuntu 14.04 + lxc.mount.entry = /sys/firmware/efi/efivars sys/firmware/efi/efivars none bind,optional 0 0 + lxc.mount.entry = /proc/sys/fs/binfmt_misc proc/sys/fs/binfmt_misc none bind,optional 0 0 + + - type: all + content: |- + lxc.arch = {{ image.architecture_personality }} + +files: + - path: /etc/hostname + generator: hostname + + - path: /etc/hosts + generator: hosts + + - path: /etc/resolvconf/resolv.conf.d/original + generator: remove + + - path: /etc/resolvconf/resolv.conf.d/tail + generator: remove + + - path: /etc/machine-id + generator: remove + + - path: /etc/netplan/10-lxc.yaml + generator: dump + content: |- + network: + version: 2 + ethernets: + eth0: {dhcp4: true} + releases: + - bionic + - cosmic + - disco + - eoan + + - path: /etc/network/interfaces + generator: dump + content: |- + # This file describes the network interfaces available on your system + # and how to activate them. For more information, see interfaces(5). + + # The loopback network interface + auto lo + iface lo inet loopback + + auto eth0 + iface eth0 inet dhcp + releases: + - trusty + - xenial + + - path: /etc/init/lxc-tty.conf + generator: upstart-tty + releases: + - trusty + + - name: meta-data + generator: cloud-init + + - name: network-config + generator: cloud-init + + - name: user-data + generator: cloud-init + + - name: vendor-data + generator: cloud-init + +packages: + manager: apt + update: true + cleanup: true + + sets: + - packages: + - apt-transport-https + - language-pack-en + - openssh-client + - vim + action: install + + - packages: + - cloud-init + action: install + releases: + - xenial + - bionic + - cosmic + - disco + - eoan + + +actions: + - trigger: post-update + action: |- + #!/bin/sh + set -eux + + # Create the ubuntu user account + getent group sudo >/dev/null 2>&1 || groupadd --system sudo + useradd --create-home -s /bin/bash -G sudo -U ubuntu + + - trigger: post-packages + action: |- + #!/bin/sh + set -eux + + # Make sure the locale is built and functional + locale-gen en_US.UTF-8 + update-locale LANG=en_US.UTF-8 + + # Cleanup underlying /run + mount -o bind / /mnt + rm -rf /mnt/run/* + umount /mnt + + # Cleanup temporary shadow paths + rm /etc/*- + +mappings: + architecture_map: debian From 513d6ebe6ec3a3fa3c92089330fc82d18701adb4 Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Thu, 8 Aug 2019 17:38:53 +0200 Subject: [PATCH 2/2] jenkins/jobs: Add cloud images Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- jenkins/jobs/image-centos.yaml | 6 +++++- jenkins/jobs/image-fedora.yaml | 6 +++++- jenkins/jobs/image-gentoo.yaml | 6 +++++- jenkins/jobs/image-oracle.yaml | 6 +++++- jenkins/jobs/image-sabayon.yaml | 6 +++++- jenkins/jobs/image-ubuntu.yaml | 10 ++++++++-- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/jenkins/jobs/image-centos.yaml b/jenkins/jobs/image-centos.yaml index 835022c..448b140 100644 --- a/jenkins/jobs/image-centos.yaml +++ b/jenkins/jobs/image-centos.yaml @@ -28,6 +28,7 @@ type: user-defined values: - default + - cloud - axis: name: restrict @@ -51,7 +52,10 @@ EXTRA_ARGS="-o source.url=http://mirror.math.princeton.edu/pub/centos-altarch/ -o source.skip_verification=true" fi - exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/centos.yaml \ + YAML_FILE=centos.yaml + [ "${variant}" = "cloud" ] && YAML_FILE=centos-cloud.yaml + + exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/${YAML_FILE} \ ${LXD_ARCHITECTURE} 7200 ${WORKSPACE} \ -o image.architecture=${ARCH} \ -o image.release=${release} ${EXTRA_ARGS} diff --git a/jenkins/jobs/image-fedora.yaml b/jenkins/jobs/image-fedora.yaml index 410badd..05ed84f 100644 --- a/jenkins/jobs/image-fedora.yaml +++ b/jenkins/jobs/image-fedora.yaml @@ -29,6 +29,7 @@ type: user-defined values: - default + - cloud - axis: name: restrict @@ -52,7 +53,10 @@ [ "${ARCH}" = "armhf" ] && ARCH="armhfp" [ "${ARCH}" = "ppc64el" ] && ARCH="ppc64le" - exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/fedora.yaml \ + YAML_FILE=fedora.yaml + [ "${variant}" = "cloud" ] && YAML_FILE=fedora-cloud.yaml + + exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/${YAML_FILE} \ ${LXD_ARCHITECTURE} 1800 ${WORKSPACE} \ -o image.architecture=${ARCH} \ -o image.release=${release} diff --git a/jenkins/jobs/image-gentoo.yaml b/jenkins/jobs/image-gentoo.yaml index 8054145..4bfde11 100644 --- a/jenkins/jobs/image-gentoo.yaml +++ b/jenkins/jobs/image-gentoo.yaml @@ -27,6 +27,7 @@ type: user-defined values: - default + - cloud - axis: name: restrict @@ -44,7 +45,10 @@ [ "${ARCH}" = "ppc64el" ] && ARCH="ppc64le" [ "${ARCH}" = "i386" ] && ARCH="i686" - exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/gentoo.yaml \ + YAML_FILE=gentoo.yaml + [ "${variant}" = "cloud" ] && YAML_FILE=gentoo-cloud.yaml + + exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/${YAML_FILE} \ ${LXD_ARCHITECTURE} 7200 ${WORKSPACE} \ -o image.architecture=${ARCH} diff --git a/jenkins/jobs/image-oracle.yaml b/jenkins/jobs/image-oracle.yaml index facb76a..58fe116 100644 --- a/jenkins/jobs/image-oracle.yaml +++ b/jenkins/jobs/image-oracle.yaml @@ -25,6 +25,7 @@ type: user-defined values: - default + - cloud - axis: name: restrict @@ -40,7 +41,10 @@ ARCH=${architecture} [ "${ARCH}" = "amd64" ] && ARCH="x86_64" - exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/oracle.yaml \ + YAML_FILE=oracle.yaml + [ "${variant}" = "cloud" ] && YAML_FILE=oracle-cloud.yaml + + exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/${YAML_FILE} \ ${LXD_ARCHITECTURE} 3600 ${WORKSPACE} \ -o image.architecture=${ARCH} \ -o image.release=${release} diff --git a/jenkins/jobs/image-sabayon.yaml b/jenkins/jobs/image-sabayon.yaml index 961ab71..209172f 100644 --- a/jenkins/jobs/image-sabayon.yaml +++ b/jenkins/jobs/image-sabayon.yaml @@ -23,6 +23,7 @@ type: user-defined values: - default + - cloud - axis: name: restrict @@ -37,7 +38,10 @@ ARCH=${architecture} - exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/sabayon.yaml \ + YAML_FILE=sabayon.yaml + [ "${variant}" = "cloud" ] && YAML_FILE=sabayon-cloud.yaml + + exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/${YAML_FILE} \ ${LXD_ARCHITECTURE} 3600 ${WORKSPACE} \ -o image.architecture=${ARCH} diff --git a/jenkins/jobs/image-ubuntu.yaml b/jenkins/jobs/image-ubuntu.yaml index 23b67a6..78edb49 100644 --- a/jenkins/jobs/image-ubuntu.yaml +++ b/jenkins/jobs/image-ubuntu.yaml @@ -33,6 +33,7 @@ type: user-defined values: - default + - cloud - axis: name: restrict @@ -48,14 +49,19 @@ ARCHIVE="http://us.ports.ubuntu.com/ubuntu-ports" fi - exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/ubuntu.yaml \ + YAML_FILE=ubuntu.yaml + [ "${variant}" = "cloud" ] && YAML_FILE=ubuntu-cloud.yaml + + exec sudo /lxc-ci/bin/build-distro /lxc-ci/images/${YAML_FILE} \ ${architecture} 3600 ${WORKSPACE} \ -o image.architecture=${architecture} \ -o image.release=${release} \ -o source.url=${ARCHIVE} execution-strategy: - combination-filter: '!(architecture=="s390x" && release == "trusty")' + combination-filter: ' + !(architecture=="s390x" && release == "trusty") && + !(variant == "cloud" && release == "trusty")' properties: - build-discarder:
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel