From dd7e7fdd1acb819a933b905e99ae701abf774788 Mon Sep 17 00:00:00 2001 From: Nisha Brahmankar Date: Thu, 13 Jun 2019 02:00:41 +0530 Subject: [PATCH] Removes tinyipa from IPA Change-Id: I56f7c9abdae1f406de1e086fdc0cac8bebca0e3c Task: 33745 Story: 2005114 --- imagebuild/README.rst | 2 - imagebuild/tinyipa/.gitignore | 13 - imagebuild/tinyipa/Makefile | 45 ---- imagebuild/tinyipa/README.rst | 146 ----------- imagebuild/tinyipa/add-ssh-tinyipa.sh | 139 ---------- imagebuild/tinyipa/build-instance-images.sh | 36 --- imagebuild/tinyipa/build-iso.sh | 16 -- imagebuild/tinyipa/build-tinyipa.sh | 197 -------------- imagebuild/tinyipa/build_files/bootlocal.sh | 74 ------ imagebuild/tinyipa/build_files/buildreqs.lst | 26 -- .../tinyipa/build_files/buildreqs_python2.lst | 2 - .../tinyipa/build_files/buildreqs_python3.lst | 2 - imagebuild/tinyipa/build_files/dhcp.sh | 21 -- imagebuild/tinyipa/build_files/fakeuname | 110 -------- imagebuild/tinyipa/build_files/finalreqs.lst | 18 -- .../tinyipa/build_files/finalreqs_python2.lst | 1 - .../tinyipa/build_files/finalreqs_python3.lst | 2 - imagebuild/tinyipa/build_files/isolinux.cfg | 9 - imagebuild/tinyipa/common.sh | 56 ---- imagebuild/tinyipa/finalise-tinyipa.sh | 246 ------------------ imagebuild/tinyipa/install-deps.sh | 23 -- imagebuild/tinyipa/tc-mirror.sh | 53 ---- imagebuild/tinyipa/udhcpc.script | 44 ---- zuul.d/ironic-python-agent-jobs.yaml | 1 + 24 files changed, 1 insertion(+), 1281 deletions(-) delete mode 100644 imagebuild/tinyipa/.gitignore delete mode 100644 imagebuild/tinyipa/Makefile delete mode 100644 imagebuild/tinyipa/README.rst delete mode 100755 imagebuild/tinyipa/add-ssh-tinyipa.sh delete mode 100755 imagebuild/tinyipa/build-instance-images.sh delete mode 100755 imagebuild/tinyipa/build-iso.sh delete mode 100755 imagebuild/tinyipa/build-tinyipa.sh delete mode 100755 imagebuild/tinyipa/build_files/bootlocal.sh delete mode 100644 imagebuild/tinyipa/build_files/buildreqs.lst delete mode 100644 imagebuild/tinyipa/build_files/buildreqs_python2.lst delete mode 100644 imagebuild/tinyipa/build_files/buildreqs_python3.lst delete mode 100644 imagebuild/tinyipa/build_files/dhcp.sh delete mode 100755 imagebuild/tinyipa/build_files/fakeuname delete mode 100644 imagebuild/tinyipa/build_files/finalreqs.lst delete mode 100644 imagebuild/tinyipa/build_files/finalreqs_python2.lst delete mode 100644 imagebuild/tinyipa/build_files/finalreqs_python3.lst delete mode 100755 imagebuild/tinyipa/build_files/isolinux.cfg delete mode 100755 imagebuild/tinyipa/common.sh delete mode 100755 imagebuild/tinyipa/finalise-tinyipa.sh delete mode 100755 imagebuild/tinyipa/install-deps.sh delete mode 100644 imagebuild/tinyipa/tc-mirror.sh delete mode 100755 imagebuild/tinyipa/udhcpc.script diff --git a/imagebuild/README.rst b/imagebuild/README.rst index 94347c2fc..be1c88f37 100644 --- a/imagebuild/README.rst +++ b/imagebuild/README.rst @@ -4,5 +4,3 @@ ironic-python-agent images coreos - Builds a CoreOS Ramdisk and Kernel suitable for running ironic-python-agent -tinyipa - Builds a TinyCoreLinux Ramdisk and Kernel suitable for running -ironic-python-agent diff --git a/imagebuild/tinyipa/.gitignore b/imagebuild/tinyipa/.gitignore deleted file mode 100644 index 1e6b193f4..000000000 --- a/imagebuild/tinyipa/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.gz -*.zip -*.tar.gz -tinyipabuild -tinyipafinal -*.vmlinuz -vmlinuz64 -*.sha256 -*.iso -*.tcz* -squashfs-root -syslinux* -newiso diff --git a/imagebuild/tinyipa/Makefile b/imagebuild/tinyipa/Makefile deleted file mode 100644 index ad0bf47ba..000000000 --- a/imagebuild/tinyipa/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -.PHONY: default all dependencies build finalise addssh iso clean clean_build clean_iso -default: dependencies build finalise instance-images - -all: dependencies build finalise iso instance-images - -dependencies: - ./install-deps.sh - -build: - ./build-tinyipa.sh - -finalise: - ./finalise-tinyipa.sh - -addssh: - ./add-ssh-tinyipa.sh - -iso: - ./build-iso.sh - -instance-images: - ./build-instance-images.sh - -clean: clean_build clean_iso - -clean_build: - sudo -v - sudo rm -rf tinyipabuild - sudo rm -rf tinyipafinal - sudo rm -rf tinyipaaddssh - rm -f *tinyipa*.vmlinuz - rm -f *tinyipa*.gz - rm -f *tinyipa*.sha256 - rm -f build_files/corepure64.gz - rm -f build_files/vmlinuz64 - rm -f build_files/*.tcz - rm -f build_files/*.tcz.* - rm -f tiny-instance-part*.img - rm -f tiny-instance-uec*.tar.gz - -clean_iso: - rm -rf newiso - rm -f build_files/syslinux-4.06.tar.gz - rm -rf build_files/syslinux-4.06 - rm -f tinyipa.iso diff --git a/imagebuild/tinyipa/README.rst b/imagebuild/tinyipa/README.rst deleted file mode 100644 index 90a13e663..000000000 --- a/imagebuild/tinyipa/README.rst +++ /dev/null @@ -1,146 +0,0 @@ -============================= -Tiny Core Ironic Python Agent -============================= - -Build script requirements -------------------------- -For the main build script: - -* wget -* pip -* unzip -* sudo -* awk -* mksquashfs - -For building an ISO you'll also need: - -* genisoimage - -Instructions: -------------- -To create a new ramdisk, run:: - - make - -or:: - - ./build-tinyipa.sh && ./finalise-tinyipa.sh - -This will create two new files once completed: - -* tinyipa.vmlinuz -* tinyipa.gz - -These are your two files to upload to glance for use with Ironic. - -Building an ISO from a previous make run: ------------------------------------------ -Once you've built tinyipa it is possible to pack it into an ISO if required. To -create a bootable ISO, run:: - - make iso - -or:: - -./build-iso.sh - -This will create one new file once completed: - -* tinyipa.iso - -To build a fresh ramdisk and build an iso from it: --------------------------------------------------- -Run:: - - make all - -To clean up the whole build environment run: --------------------------------------------- -Run:: - - make clean - -For cleaning up just the iso or just the ramdisk build:: - - make clean_iso - -or:: - - make clean_build - -Advanced options ----------------- - -(De)Optimizing the image -~~~~~~~~~~~~~~~~~~~~~~~~ - -If you want the build script to preinstall everything into the ramdisk, -instead of loading some things at runtime (this results in a slightly bigger -ramdisk), before running make or build-tinyipa.sh run:: - - export BUILD_AND_INSTALL_TINYIPA=true - -By default, building TinyIPA will compile most of the Python code to -optimized ``*.pyo`` files, completely remove most of ``*.py`` and ``*.pyc`` -files, and run ironic-python-agent with ``PYTHONOPTIMIZE=1`` -to save space on the ramdisk. -If instead you want a normal Python experience inside the image, -for example for debugging/hacking on IPA in a running ramdisk, -before running make or build-tinyipa.sh run:: - - export PYOPTIMIZE_TINYIPA=false - - -Enabling/disabling SSH access to the ramdisk -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -By default tinyipa will be built with OpenSSH server installed but no -public SSH keys authorized to access it. - -If you want to enable SSH access to the image, set ``AUTHORIZE_SSH`` variable -in your shell before building the tinyipa:: - - export AUTHORIZE_SSH=true - -By default it will use public RSA or DSA keys of the user running the build. -To provide other public SSH key, export path to it in your shell before -building tinyipa as follows:: - - export SSH_PUBLIC_KEY= - -If you want to disable SSH altogether, set ``INSTALL_SSH`` variable in your -shell to ``false`` before building the tinyipa:: - - export INSTALL_SSH=false - -You can also rebuild an already built tinyipa image by using ``addssh`` make -tagret:: - - make addssh - -This will fetch the pre-built tinyipa image from "tarballs.openstack.org" -using the version specified as ``BRANCH_NAME`` shell variable as described -above, or it may use an already downloaded ramdisk image if path to it is set -as ``TINYIPA_RAMDISK_FILE`` shell variable before running this make target. -It will install and configure OpenSSH if needed and add public SSH keys for -``tc`` user using the same ``SSH_PUBLIC_KEY`` shell variable as described -above. - -Enabling biosdevname in the ramdisk -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you want to collect BIOS given names of NICs in the inventory, set -``TINYIPA_REQUIRE_BIOSDEVNAME`` variable in your shell before building the -tinyipa:: - - export TINYIPA_REQUIRE_BIOSDEVNAME=true - -Using ironic-lib from source -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -`ironic-lib `_ contains -important parts of the provisioning logic. If you need to build an IPA image -with your local checkout of `ironic-lib`, export the following variable:: - - export IRONIC_LIB_SOURCE=/absolute/path/to/ironic-lib/checkout diff --git a/imagebuild/tinyipa/add-ssh-tinyipa.sh b/imagebuild/tinyipa/add-ssh-tinyipa.sh deleted file mode 100755 index c1372e0a5..000000000 --- a/imagebuild/tinyipa/add-ssh-tinyipa.sh +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/bash - -# Rebuild upstream pre-built tinyipa it to be usable with ansible-deploy. -# -# Downloads the pre-built tinyipa ramdisk from tarballs.openstack.org or -# rebuilds a ramdisk under path set as TINYIPA_RAMDISK_FILE shell var. - -# During rebuild this script installs and configures OpenSSH server if needed -# and makes required changes for Ansible + Python to work in compiled/optimized -# Python environment. -# -# By default, id_rsa or id_dsa keys of the user performing the build -# are baked into the image as authorized_keys for 'tc' user. -# To supply different public ssh key, befor running this script set -# SSH_PUBLIC_KEY environment variable to point to absolute path to the key. -# -# This script produces "ansible-" ramdisk that can serve -# as ramdisk for both ansible-deploy driver and agent-based Ironic drivers, - -set -ex -WORKDIR=$(readlink -f $0 | xargs dirname) -REBUILDDIR="$WORKDIR/tinyipaaddssh" -DST_DIR=$REBUILDDIR -source ${WORKDIR}/common.sh - -TINYCORE_MIRROR_URL=${TINYCORE_MIRROR_URL:-} -BRANCH_PATH=${BRANCH_PATH:-master} -TINYIPA_RAMDISK_FILE=${TINYIPA_RAMDISK_FILE:-} - -SSH_PUBLIC_KEY=${SSH_PUBLIC_KEY:-} - -function validate_params { - echo "Validating location of public SSH key" - if [ -n "$SSH_PUBLIC_KEY" ]; then - if [ -r "$SSH_PUBLIC_KEY" ]; then - _found_ssh_key="$SSH_PUBLIC_KEY" - fi - else - for fmt in rsa dsa; do - if [ -r "$HOME/.ssh/id_$fmt.pub" ]; then - _found_ssh_key="$HOME/.ssh/id_$fmt.pub" - break - fi - done - fi - - if [ -z $_found_ssh_key ]; then - echo "Failed to find neither provided nor default SSH key" - exit 1 - fi -} - -function get_tinyipa { - if [ -z $TINYIPA_RAMDISK_FILE ]; then - mkdir -p $WORKDIR/build_files/cache - cd $WORKDIR/build_files/cache - wget -N https://tarballs.openstack.org/ironic-python-agent/tinyipa/files/tinyipa${BRANCH_EXT}.gz - TINYIPA_RAMDISK_FILE="$WORKDIR/build_files/cache/tinyipa${BRANCH_EXT}.gz" - fi -} - -function unpack_ramdisk { - - if [ -d "$REBUILDDIR" ]; then - sudo rm -rf "$REBUILDDIR" - fi - - mkdir -p "$REBUILDDIR" - - # Extract rootfs from .gz file - ( cd "$REBUILDDIR" && zcat "$TINYIPA_RAMDISK_FILE" | sudo cpio -i -H newc -d ) - -} - -function install_ssh { - if [ ! -f "$REBUILDDIR/usr/local/etc/ssh/sshd_config" ]; then - # tinyipa was built without SSH server installed - # Install and configure bare minimum for SSH access - $TC_CHROOT_CMD tce-load -wic openssh - # Configure OpenSSH - $CHROOT_CMD cp /usr/local/etc/ssh/sshd_config.orig /usr/local/etc/ssh/sshd_config - echo "PasswordAuthentication no" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - # Generate and configure host keys - RSA, DSA, Ed25519 - # NOTE(pas-ha) ECDSA host key will still be re-generated fresh on every image boot - $CHROOT_CMD ssh-keygen -q -t rsa -N "" -f /usr/local/etc/ssh/ssh_host_rsa_key - $CHROOT_CMD ssh-keygen -q -t dsa -N "" -f /usr/local/etc/ssh/ssh_host_dsa_key - $CHROOT_CMD ssh-keygen -q -t ed25519 -N "" -f /usr/local/etc/ssh/ssh_host_ed25519_key - echo "HostKey /usr/local/etc/ssh/ssh_host_rsa_key" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - echo "HostKey /usr/local/etc/ssh/ssh_host_dsa_key" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - echo "HostKey /usr/local/etc/ssh/ssh_host_ed25519_key" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - fi - - # setup new user SSH keys anyway - $CHROOT_CMD mkdir -p /home/tc - $CHROOT_CMD chown -R tc.staff /home/tc - $TC_CHROOT_CMD mkdir -p /home/tc/.ssh - cat $_found_ssh_key | $TC_CHROOT_CMD tee /home/tc/.ssh/authorized_keys - $CHROOT_CMD chown tc.staff /home/tc/.ssh/authorized_keys - $TC_CHROOT_CMD chmod 600 /home/tc/.ssh/authorized_keys -} - -function fix_python_optimize { - if grep -q "PYTHONOPTIMIZE=1" "$REBUILDDIR/opt/bootlocal.sh"; then - # tinyipa was built with optimized Python environment, apply fixes - echo "PYTHONOPTIMIZE=1" | $TC_CHROOT_CMD tee -a /home/tc/.ssh/environment - echo "PermitUserEnvironment yes" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - echo 'Defaults env_keep += "PYTHONOPTIMIZE"' | $CHROOT_CMD tee -a /etc/sudoers - fi -} - - -function rebuild_ramdisk { - # Rebuild build directory into gz file - ansible_basename="ansible-$(basename $TINYIPA_RAMDISK_FILE)" - ( cd "$REBUILDDIR" && sudo find | sudo cpio -o -H newc | gzip -9 > "$WORKDIR/${ansible_basename}" ) - # Output file created by this script and its size - cd "$WORKDIR" - echo "Produced files:" - du -h "${ansible_basename}" -} - -sudo -v - - -validate_params -get_tinyipa -unpack_ramdisk -setup_tce "$DST_DIR" - -# NOTE (pas-ha) default tinyipa is built without SSH access, enable it here -install_ssh -# NOTE(pas-ha) default tinyipa is built with PYOPTIMIZE_TINYIPA=true and -# for Ansible+python to work we need to ensure that PYTHONOPTIMIZE=1 is -# set for all sessions from 'tc' user including those that are escalated -# with 'sudo' afterwards -fix_python_optimize - -cleanup_tce "$DST_DIR" -rebuild_ramdisk diff --git a/imagebuild/tinyipa/build-instance-images.sh b/imagebuild/tinyipa/build-instance-images.sh deleted file mode 100755 index 120377166..000000000 --- a/imagebuild/tinyipa/build-instance-images.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -set -ex -WORKDIR=$(readlink -f $0 | xargs dirname) -DST_DIR=$(mktemp -d) -source ${WORKDIR}/common.sh -PARTIMG="$WORKDIR/tiny-instance-part${BRANCH_EXT}.img" -UECFILE="$WORKDIR/tiny-instance-uec${BRANCH_EXT}.tar.gz" -fs_type='ext4' - -sudo rm -rf $PARTIMG $UECFILE -sudo truncate --size=150M $PARTIMG - -sudo mkfs."${fs_type}" -F "$PARTIMG" -L "root" -sudo mount -o loop "$PARTIMG" "$DST_DIR/" - -# Extract rootfs from .gz file -( cd "$DST_DIR" && zcat $WORKDIR/build_files/corepure64.gz | sudo cpio -i -H newc -d ) - -setup_tce $DST_DIR - -$TC_CHROOT_CMD tce-load -wci grub2-multi.tcz - -cleanup_tce $DST_DIR -sudo umount $DST_DIR/ - -pushd $DST_DIR/ -cp $WORKDIR/tinyipa${BRANCH_EXT}.gz $DST_DIR/tinyipa-initrd -cp $WORKDIR/tinyipa${BRANCH_EXT}.vmlinuz $DST_DIR/tinyipa-vmlinuz -cp $PARTIMG $DST_DIR/ - -tar -czf $UECFILE ./ - -popd - -sudo rm -rf $DST_DIR diff --git a/imagebuild/tinyipa/build-iso.sh b/imagebuild/tinyipa/build-iso.sh deleted file mode 100755 index be0db458e..000000000 --- a/imagebuild/tinyipa/build-iso.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -set -ex -WORKDIR=$(readlink -f $0 | xargs dirname) - -cd $WORKDIR/build_files -wget -N https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.06.tar.gz && tar zxf syslinux-4.06.tar.gz - -cd $WORKDIR -rm -rf newiso -mkdir -p newiso/boot/isolinux -cp build_files/syslinux-4.06/core/isolinux.bin newiso/boot/isolinux/. -cp build_files/isolinux.cfg newiso/boot/isolinux/. -cp tinyipa.gz newiso/boot/corepure64.gz -cp tinyipa.vmlinuz newiso/boot/vmlinuz64 -genisoimage -l -r -J -R -V TC-custom -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o tinyipa.iso newiso diff --git a/imagebuild/tinyipa/build-tinyipa.sh b/imagebuild/tinyipa/build-tinyipa.sh deleted file mode 100755 index f2f8da659..000000000 --- a/imagebuild/tinyipa/build-tinyipa.sh +++ /dev/null @@ -1,197 +0,0 @@ -#!/bin/bash - -set -ex -WORKDIR=$(readlink -f $0 | xargs dirname) -source ${WORKDIR}/tc-mirror.sh -BUILDDIR="$WORKDIR/tinyipabuild" -BUILD_AND_INSTALL_TINYIPA=${BUILD_AND_INSTALL_TINYIPA:-false} -TINYCORE_MIRROR_URL=${TINYCORE_MIRROR_URL:-} -TINYIPA_REQUIRE_BIOSDEVNAME=${TINYIPA_REQUIRE_BIOSDEVNAME:-false} -TINYIPA_REQUIRE_IPMITOOL=${TINYIPA_REQUIRE_IPMITOOL:-true} -IRONIC_LIB_SOURCE=${IRONIC_LIB_SOURCE:-} -USE_PYTHON3=${USE_PYTHON3:-True} - -CHROOT_PATH="/tmp/overides:/usr/local/sbin:/usr/local/bin:/apps/bin:/usr/sbin:/usr/bin:/sbin:/bin" -CHROOT_CMD="sudo chroot $BUILDDIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy" - -TC=1001 -STAFF=50 - -# NOTE(moshele): Git < 1.7.10 requires a separate checkout, see LP #1590912 -function clone_and_checkout { - git clone $1 $2 --depth=1 --branch $3; cd $2; git checkout $3; cd - -} - -echo "Building tinyipa:" - -# Ensure we have an extended sudo to prevent the need to enter a password over -# and over again. -sudo -v - -# If an old build directory exists remove it -if [ -d "$BUILDDIR" ]; then - sudo rm -rf "$BUILDDIR" -fi - -############################################## -# Download and Cache Tiny Core Files -############################################## - -# Find a working TC mirror if none is explicitly provided -choose_tc_mirror - -cd $WORKDIR/build_files -wget -N $TINYCORE_MIRROR_URL/8.x/x86_64/release/distribution_files/corepure64.gz -wget -N $TINYCORE_MIRROR_URL/8.x/x86_64/release/distribution_files/vmlinuz64 -cd $WORKDIR - -######################################################## -# Build Required Python Dependecies in a Build Directory -######################################################## - -# Make directory for building in -mkdir "$BUILDDIR" - -# Extract rootfs from .gz file -( cd "$BUILDDIR" && zcat $WORKDIR/build_files/corepure64.gz | sudo cpio -i -H newc -d ) - -# Configure mirror -sudo sh -c "echo $TINYCORE_MIRROR_URL > $BUILDDIR/opt/tcemirror" - -# Download TGT, Qemu-utils, Biosdevname and IPMItool source -clone_and_checkout "https://github.com/fujita/tgt.git" "${BUILDDIR}/tmp/tgt" "v1.0.62" -clone_and_checkout "https://github.com/qemu/qemu.git" "${BUILDDIR}/tmp/qemu" "v2.5.0" -clone_and_checkout "https://github.com/lyonel/lshw.git" "${BUILDDIR}/tmp/lshw" "B.02.18" -if $TINYIPA_REQUIRE_BIOSDEVNAME; then - wget -N -O - https://linux.dell.com/biosdevname/biosdevname-0.7.2/biosdevname-0.7.2.tar.gz | tar -xz -C "${BUILDDIR}/tmp" -f - -fi -if $TINYIPA_REQUIRE_IPMITOOL; then - wget -N -O - https://github.com/ipmitool/ipmitool/archive/IPMITOOL_1_8_18.tar.gz | tar -xz -C "${BUILDDIR}/tmp" -f - -fi - -# Create directory for python local mirror -mkdir -p "$BUILDDIR/tmp/localpip" - -# Download IPA and requirements -cd ../.. -rm -rf *.egg-info -pwd -python setup.py sdist --dist-dir "$BUILDDIR/tmp/localpip" --quiet -ls $BUILDDIR/tmp/localpip || true -cp requirements.txt $BUILDDIR/tmp/ipa-requirements.txt - -if [ -n "$IRONIC_LIB_SOURCE" ]; then - pushd $IRONIC_LIB_SOURCE - rm -rf *.egg-info - python setup.py sdist --dist-dir "$BUILDDIR/tmp/localpip" --quiet - cp requirements.txt $BUILDDIR/tmp/ironic-lib-requirements.txt - popd -fi - -imagebuild/common/generate_upper_constraints.sh upper-constraints.txt -if [ -n "$IRONIC_LIB_SOURCE" ]; then - sed -i '/ironic-lib/d' upper-constraints.txt $BUILDDIR/tmp/ipa-requirements.txt -fi -cp upper-constraints.txt $BUILDDIR/tmp/upper-constraints.txt -echo Using upper-constraints: -cat upper-constraints.txt -cd $WORKDIR - -sudo cp /etc/resolv.conf $BUILDDIR/etc/resolv.conf - -trap "sudo umount $BUILDDIR/proc; sudo umount $BUILDDIR/dev/pts" EXIT -sudo mount --bind /proc $BUILDDIR/proc -sudo mount --bind /dev/pts $BUILDDIR/dev/pts - -if [ -d /opt/stack/new ]; then - CI_DIR=/opt/stack/new -elif [ -d /opt/stack ]; then - CI_DIR=/opt/stack -else - CI_DIR= -fi - -if [ -n "$CI_DIR" ]; then - # Running in CI environment, make checkouts available - $CHROOT_CMD mkdir -p $CI_DIR - for project in $(ls $CI_DIR); do - if grep -q "$project" $BUILDDIR/tmp/upper-constraints.txt && - [ -d "$CI_DIR/$project/.git" ]; then - sudo cp -R "$CI_DIR/$project" $BUILDDIR/$CI_DIR/ - fi - done -fi - -$CHROOT_CMD mkdir /etc/sysconfig/tcedir -$CHROOT_CMD chmod a+rwx /etc/sysconfig/tcedir -$CHROOT_CMD touch /etc/sysconfig/tcuser -$CHROOT_CMD chmod a+rwx /etc/sysconfig/tcuser - -mkdir $BUILDDIR/tmp/overides -cp $WORKDIR/build_files/fakeuname $BUILDDIR/tmp/overides/uname - -PY_REQS="buildreqs_python2.lst" -if [[ $USE_PYTHON3 == "True" ]]; then - PY_REQS="buildreqs_python3.lst" -fi - -while read line; do - sudo chroot --userspec=$TC:$STAFF $BUILDDIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy tce-load -wci $line -done < <(paste $WORKDIR/build_files/$PY_REQS $WORKDIR/build_files/buildreqs.lst) - -PIP_COMMAND="pip" -TINYIPA_PYTHON_EXE="python" -if [[ $USE_PYTHON3 == "True" ]]; then - PIP_COMMAND="pip3" - TINYIPA_PYTHON_EXE="python3" -fi - -# Build python wheels -$CHROOT_CMD ${TINYIPA_PYTHON_EXE} -m ensurepip -$CHROOT_CMD ${PIP_COMMAND} install --upgrade pip wheel -$CHROOT_CMD ${PIP_COMMAND} install pbr -$CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --wheel-dir /tmp/wheels -r /tmp/ipa-requirements.txt -if [ -n "$IRONIC_LIB_SOURCE" ]; then - $CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --wheel-dir /tmp/wheels -r /tmp/ironic-lib-requirements.txt - $CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --no-index --pre --wheel-dir /tmp/wheels --find-links=/tmp/localpip --find-links=/tmp/wheels ironic-lib -fi -$CHROOT_CMD ${PIP_COMMAND} wheel -c /tmp/upper-constraints.txt --no-index --pre --wheel-dir /tmp/wheels --find-links=/tmp/localpip --find-links=/tmp/wheels ironic-python-agent -echo Resulting wheels: -ls -1 $BUILDDIR/tmp/wheels - -# Build tgt -rm -rf $WORKDIR/build_files/tgt.tcz -$CHROOT_CMD /bin/sh -c "cd /tmp/tgt && make && make install-programs install-conf install-scripts DESTDIR=/tmp/tgt-installed" -find $BUILDDIR/tmp/tgt-installed/ -type f -executable | xargs file | awk -F ':' '/ELF/ {print $1}' | sudo xargs strip -cd $WORKDIR/build_files && mksquashfs $BUILDDIR/tmp/tgt-installed tgt.tcz && md5sum tgt.tcz > tgt.tcz.md5.txt - -# Build qemu-utils -rm -rf $WORKDIR/build_files/qemu-utils.tcz -$CHROOT_CMD /bin/sh -c "cd /tmp/qemu && ./configure --disable-system --disable-user --disable-linux-user --disable-bsd-user --disable-guest-agent --disable-blobs && make && make install DESTDIR=/tmp/qemu-utils" -find $BUILDDIR/tmp/qemu-utils/ -type f -executable | xargs file | awk -F ':' '/ELF/ {print $1}' | sudo xargs strip -cd $WORKDIR/build_files && mksquashfs $BUILDDIR/tmp/qemu-utils qemu-utils.tcz && md5sum qemu-utils.tcz > qemu-utils.tcz.md5.txt -# Create qemu-utils.tcz.dep -echo "glib2.tcz" > qemu-utils.tcz.dep - -# Build lshw -rm -rf $WORKDIR/build_files/lshw.tcz -# NOTE(mjturek): We touch src/lshw.1 and clear src/po/Makefile to avoid building the man pages, as they aren't used and require large dependencies to build. -$CHROOT_CMD /bin/sh -c "cd /tmp/lshw && touch src/lshw.1 && echo install: > src/po/Makefile && make && make install DESTDIR=/tmp/lshw-installed" -find $BUILDDIR/tmp/lshw-installed/ -type f -executable | xargs file | awk -F ':' '/ELF/ {print $1}' | sudo xargs strip -cd $WORKDIR/build_files && mksquashfs $BUILDDIR/tmp/lshw-installed lshw.tcz && md5sum lshw.tcz > lshw.tcz.md5.txt - -# Build biosdevname -if $TINYIPA_REQUIRE_BIOSDEVNAME; then - rm -rf $WORKDIR/build_files/biosdevname.tcz - $CHROOT_CMD /bin/sh -c "cd /tmp/biosdevname-* && ./configure && make && make install DESTDIR=/tmp/biosdevname-installed" - find $BUILDDIR/tmp/biosdevname-installed/ -type f -executable | xargs file | awk -F ':' '/ELF/ {print $1}' | sudo xargs strip - cd $WORKDIR/build_files && mksquashfs $BUILDDIR/tmp/biosdevname-installed biosdevname.tcz && md5sum biosdevname.tcz > biosdevname.tcz.md5.txt -fi - -if $TINYIPA_REQUIRE_IPMITOOL; then - rm -rf $WORKDIR/build_files/ipmitool.tcz - # NOTE(TheJulia): Explicitly add the libtool path since /usr/local/ is not in path from the chroot. - $CHROOT_CMD /bin/sh -c "cd /tmp/ipmitool-* && env LIBTOOL='/usr/local/bin/libtool' ./bootstrap && ./configure && make && make install DESTDIR=/tmp/ipmitool" - find $BUILDDIR/tmp/ipmitool/ -type f -executable | xargs file | awk -F ':' '/ELF/ {print $1}' | sudo xargs strip - cd $WORKDIR/build_files && mksquashfs $BUILDDIR/tmp/ipmitool ipmitool.tcz && md5sum ipmitool.tcz > ipmitool.tcz.md5.txt -fi diff --git a/imagebuild/tinyipa/build_files/bootlocal.sh b/imagebuild/tinyipa/build_files/bootlocal.sh deleted file mode 100755 index 0fcf0b4f7..000000000 --- a/imagebuild/tinyipa/build_files/bootlocal.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh -# put other system startup commands here - -#exec > /tmp/installlogs 2>&1 -set -x - -echo "Starting bootlocal script:" -date - -export HOME=/root - -# Start SSHd -if [ -f /usr/local/etc/init.d/openssh ]; then - echo "Starting OpenSSH server:" - /usr/local/etc/init.d/openssh start -fi - -# Maybe save some RAM? -#rm -rf /tmp/builtin - -# Install IPA and dependecies -if ! type "ironic-python-agent" > /dev/null ; then - PIP_COMMAND="pip" - if hash pip3 2>/dev/null; then - PIP_COMMAND="pip3" - fi - $PIP_COMMAND install --no-index --find-links=file:///tmp/wheelhouse ironic_python_agent -fi - -# Create ipa-rescue-config directory for rescue password -sudo mkdir -p /etc/ipa-rescue-config - -export PYTHONOPTIMIZE=1 - -# Run IPA -echo "Starting Ironic Python Agent:" -date -ironic-python-agent 2>&1 | tee /var/log/ironic-python-agent.log - - -create_rescue_user() { - crypted_pass=$(cat /etc/ipa-rescue-config/ipa-rescue-password) - sudo adduser rescue -D -G root # no useradd - echo "rescue:$crypted_pass" | sudo chpasswd -e - sudo sh -c "echo \"rescue ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers" # no suooers.d in tiny core. - - # Restart sshd with allowing password authentication - sudo sed -i -e 's/^PasswordAuthentication no/PasswordAuthentication yes/' /usr/local/etc/ssh/sshd_config - sudo /usr/local/etc/init.d/openssh restart -} - -# Setup DHCP network -configure_dhcp_network() { - for pidfile in `ls /var/run/udhcpc/*.pid`; do - kill `cat $pidfile` - done - - # NOTE(TheJulia): We may need to add a short wait here as - # network interface plugging actions may not be asynchronous. - echo "Sleeping 30 sec as network interface is being updated" - sleep 30 - INTERFACES=$(ip -o link |grep "LOWER_UP"|cut -f2 -d" "|sed 's/://'|grep -v "lo") - for interface in $INTERFACES; do - pidfile="/var/run/udhcpc/${interface}.pid" - /sbin/udhcpc -b -p ${pidfile} -i ${interface} -s /opt/udhcpc.script >> /var/log/udhcpc.log 2>&1 - done -} - -if [ -f /etc/ipa-rescue-config/ipa-rescue-password ]; then - create_rescue_user || exit 0 - configure_dhcp_network || exit 0 -else - echo "IPA has exited. No rescue password file was defined." -fi diff --git a/imagebuild/tinyipa/build_files/buildreqs.lst b/imagebuild/tinyipa/build_files/buildreqs.lst deleted file mode 100644 index 134c0efdf..000000000 --- a/imagebuild/tinyipa/build_files/buildreqs.lst +++ /dev/null @@ -1,26 +0,0 @@ -autoconf.tcz -autogen-dev.tcz -autogen.tcz -automake.tcz -bash.tcz -binutils.tcz -compiletc.tcz -coreutils.tcz -dmidecode.tcz -gdisk.tcz -git.tcz -glib2-dev.tcz -hdparm.tcz -libpci-dev.tcz -libtool-dev.tcz -libtool.tcz -parted.tcz -pciutils.tcz -pixman-dev.tcz -pkg-config.tcz -raid-dm-4.8.17-tinycore64.tcz -scsi-4.8.17-tinycore64.tcz -ipv6-4.8.17-tinycore64.tcz -udev-lib.tcz -util-linux.tcz -zlib_base-dev.tcz diff --git a/imagebuild/tinyipa/build_files/buildreqs_python2.lst b/imagebuild/tinyipa/build_files/buildreqs_python2.lst deleted file mode 100644 index cc7549241..000000000 --- a/imagebuild/tinyipa/build_files/buildreqs_python2.lst +++ /dev/null @@ -1,2 +0,0 @@ -python.tcz -python-dev.tcz \ No newline at end of file diff --git a/imagebuild/tinyipa/build_files/buildreqs_python3.lst b/imagebuild/tinyipa/build_files/buildreqs_python3.lst deleted file mode 100644 index 1b6b0c007..000000000 --- a/imagebuild/tinyipa/build_files/buildreqs_python3.lst +++ /dev/null @@ -1,2 +0,0 @@ -python3.6.tcz -python3.6-dev.tcz \ No newline at end of file diff --git a/imagebuild/tinyipa/build_files/dhcp.sh b/imagebuild/tinyipa/build_files/dhcp.sh deleted file mode 100644 index 8383f2625..000000000 --- a/imagebuild/tinyipa/build_files/dhcp.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# The DHCP portion is now separated out, in order to not slow the boot down -# only to wait for slow network cards -. /etc/init.d/tc-functions - -# This waits until all devices have registered -/sbin/udevadm settle --timeout=%UDEV_SETTLE_TIMEOUT% - -NETDEVICES="$(awk -F: '/eth.:|tr.:/{print $1}' /proc/net/dev 2>/dev/null)" -echo "$0: Discovered network devices: $NETDEVICES" -for DEVICE in $NETDEVICES; do - ifconfig $DEVICE | grep -q "inet addr" - if [ "$?" != 0 ]; then - echo -e "\nNetwork device $DEVICE detected, DHCP broadcasting for IP." - trap 2 3 11 - /sbin/udhcpc -b -i $DEVICE -x hostname:$(/bin/hostname) -p /var/run/udhcpc.$DEVICE.pid 2>&1 & - trap "" 2 3 11 - sleep 1 - fi -done - diff --git a/imagebuild/tinyipa/build_files/fakeuname b/imagebuild/tinyipa/build_files/fakeuname deleted file mode 100755 index 96405e328..000000000 --- a/imagebuild/tinyipa/build_files/fakeuname +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh - -S="Linux" -N="box" -R="4.8.17-tinycore64" -P="unknown" -V="#2017 SMP" -M="x86_64" -I="unknown" -O="GNU/Linux" - -OPT_A=false -OPT_S=false -OPT_N=false -OPT_R=false -OPT_P=false -OPT_V=false -OPT_M=false -OPT_I=false -OPT_O=false - -if [ -z "$1" ]; then - echo "-ASNRPVMIO" - exit 1 -fi - -while :; do - case $1 in - -a) - OPT_A=true - shift - ;; - -s) - OPT_S=true - shift - ;; - -n) - OPT_N=true - shift - ;; - -r) - OPT_R=true - shift - ;; - -p) - OPT_P=true - shift - ;; - -v) - OPT_V=true - shift - ;; - -m) - OPT_M=true - shift - ;; - -i) - OPT_I=true - shift - ;; - -o) - OPT_O=true - shift - ;; - -rs) - OPT_R=true - OPT_S=true - shift - ;; - *) - if [ ! -z "$1" ]; then - echo "uname -asnrpvmio" - exit 1 - fi - break - ;; - esac -done - -if $OPT_A; then - echo "$S $N $R $V $M $O" - exit 0 -fi - -string='' -if $OPT_S; then - string="$string $S" -fi -if $OPT_N; then - string="$string $N" -fi -if $OPT_R; then - string="$string $R" -fi -if $OPT_P; then - string="$string $P" -fi -if $OPT_V; then - string="$string $V" -fi -if $OPT_M; then - string="$string $M" -fi -if $OPT_I; then - string="$string $I" -fi -if $OPT_O; then - string="$string $O" -fi -echo $string diff --git a/imagebuild/tinyipa/build_files/finalreqs.lst b/imagebuild/tinyipa/build_files/finalreqs.lst deleted file mode 100644 index 182bb5992..000000000 --- a/imagebuild/tinyipa/build_files/finalreqs.lst +++ /dev/null @@ -1,18 +0,0 @@ -bash.tcz -coreutils.tcz -dmidecode.tcz -gdisk.tcz -hdparm.tcz -iproute2.tcz -parted.tcz -popt.tcz -pciutils.tcz -raid-dm-4.8.17-tinycore64.tcz -scsi-4.8.17-tinycore64.tcz -udev-lib.tcz -util-linux.tcz -glib2.tcz -iproute2.tcz -smartmontools.tcz -mdadm.tcz -ipv6-4.8.17-tinycore64.tcz diff --git a/imagebuild/tinyipa/build_files/finalreqs_python2.lst b/imagebuild/tinyipa/build_files/finalreqs_python2.lst deleted file mode 100644 index c29888454..000000000 --- a/imagebuild/tinyipa/build_files/finalreqs_python2.lst +++ /dev/null @@ -1 +0,0 @@ -python.tcz \ No newline at end of file diff --git a/imagebuild/tinyipa/build_files/finalreqs_python3.lst b/imagebuild/tinyipa/build_files/finalreqs_python3.lst deleted file mode 100644 index a2a4bdc87..000000000 --- a/imagebuild/tinyipa/build_files/finalreqs_python3.lst +++ /dev/null @@ -1,2 +0,0 @@ -python3.6.tcz -expat2.tcz \ No newline at end of file diff --git a/imagebuild/tinyipa/build_files/isolinux.cfg b/imagebuild/tinyipa/build_files/isolinux.cfg deleted file mode 100755 index 7fe8c22db..000000000 --- a/imagebuild/tinyipa/build_files/isolinux.cfg +++ /dev/null @@ -1,9 +0,0 @@ -display boot.msg -default corepure64 - -label corepure64 - kernel /boot/vmlinuz64 - initrd /boot/corepure64.gz - append loglevel=3 syslog showapps - -implicit 0 diff --git a/imagebuild/tinyipa/common.sh b/imagebuild/tinyipa/common.sh deleted file mode 100755 index 44d9d0877..000000000 --- a/imagebuild/tinyipa/common.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -WORKDIR=$(readlink -f $0 | xargs dirname) -source ${WORKDIR}/tc-mirror.sh - -# Allow an extension to be added to the generated files by specifying -# $BRANCH_PATH e.g. export BRANCH_PATH=master results in tinyipa-master.gz etc -BRANCH_EXT='' -if [ -n "$BRANCH_PATH" ]; then - BRANCH_EXT="-$BRANCH_PATH" -fi -export BRANCH_EXT - -TC=1001 -STAFF=50 - -CHROOT_PATH="/tmp/overides:/usr/local/sbin:/usr/local/bin:/apps/bin:/usr/sbin:/usr/bin:/sbin:/bin" -CHROOT_CMD="sudo chroot $DST_DIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy" -TC_CHROOT_CMD="sudo chroot --userspec=$TC:$STAFF $DST_DIR /usr/bin/env -i PATH=$CHROOT_PATH http_proxy=$http_proxy https_proxy=$https_proxy no_proxy=$no_proxy" - -function setup_tce { - # Setup resolv.conf, add mirrors, mount proc - local dst_dir="$1" - - # Find a working TC mirror if none is explicitly provided - choose_tc_mirror - - sudo cp $dst_dir/etc/resolv.conf $dst_dir/etc/resolv.conf.old - sudo cp /etc/resolv.conf $dst_dir/etc/resolv.conf - - sudo cp -a $dst_dir/opt/tcemirror $dst_dir/opt/tcemirror.old - sudo sh -c "echo $TINYCORE_MIRROR_URL > $dst_dir/opt/tcemirror" - - mkdir -p $dst_dir/tmp/builtin/optional - $CHROOT_CMD chown -R tc.staff /tmp/builtin - $CHROOT_CMD chmod -R a+w /tmp/builtin - $CHROOT_CMD ln -sf /tmp/builtin /etc/sysconfig/tcedir - echo "tc" | $CHROOT_CMD tee -a /etc/sysconfig/tcuser - - # Mount /proc for chroot commands - sudo mount --bind /proc $dst_dir/proc -} - -function cleanup_tce { - local dst_dir="$1" - - # Unmount /proc and clean up everything - sudo umount $dst_dir/proc - sudo rm -rf $dst_dir/tmp/builtin - sudo rm -rf $dst_dir/tmp/tcloop - sudo rm -rf $dst_dir/usr/local/tce.installed - sudo mv $dst_dir/opt/tcemirror.old $dst_dir/opt/tcemirror - sudo mv $dst_dir/etc/resolv.conf.old $dst_dir/etc/resolv.conf - sudo rm $dst_dir/etc/sysconfig/tcuser - sudo rm $dst_dir/etc/sysconfig/tcedir -} diff --git a/imagebuild/tinyipa/finalise-tinyipa.sh b/imagebuild/tinyipa/finalise-tinyipa.sh deleted file mode 100755 index d8f967d47..000000000 --- a/imagebuild/tinyipa/finalise-tinyipa.sh +++ /dev/null @@ -1,246 +0,0 @@ -#!/bin/bash - -set -ex -WORKDIR=$(readlink -f $0 | xargs dirname) -FINALDIR="$WORKDIR/tinyipafinal" -DST_DIR=$FINALDIR -source ${WORKDIR}/common.sh - -BUILDDIR="$WORKDIR/tinyipabuild" -BUILD_AND_INSTALL_TINYIPA=${BUILD_AND_INSTALL_TINYIPA:-true} -TINYCORE_MIRROR_URL=${TINYCORE_MIRROR_URL:-} -ENABLE_SSH=${ENABLE_SSH:-false} -INSTALL_SSH=${INSTALL_SSH:-true} -AUTHORIZE_SSH=${ENABLE_SSH:-false} - -if $ENABLE_SSH; then - echo "WARNING: using ENABLE_SSH is deprecated, use INSTALL_SSH and AUTHORIZE_SSH variables instead" - INSTALL_SSH=true - AUTHORIZE_SSH=true -fi - -SSH_PUBLIC_KEY=${SSH_PUBLIC_KEY:-} -PYOPTIMIZE_TINYIPA=${PYOPTIMIZE_TINYIPA:-true} -TINYIPA_REQUIRE_BIOSDEVNAME=${TINYIPA_REQUIRE_BIOSDEVNAME:-false} -TINYIPA_REQUIRE_IPMITOOL=${TINYIPA_REQUIRE_IPMITOOL:-true} -TINYIPA_UDEV_SETTLE_TIMEOUT=${TINYIPA_UDEV_SETTLE_TIMEOUT:-20} -USE_PYTHON3=${USE_PYTHON3:-True} - - -echo "Finalising tinyipa:" - -if $AUTHORIZE_SSH ; then - echo "Validating location of public SSH key" - if [ -n "$SSH_PUBLIC_KEY" ]; then - if [ -f "$SSH_PUBLIC_KEY" ]; then - _found_ssh_key="$SSH_PUBLIC_KEY" - fi - else - for fmt in rsa dsa; do - if [ -f "$HOME/.ssh/id_$fmt.pub" ]; then - _found_ssh_key="$HOME/.ssh/id_$fmt.pub" - break - fi - done - fi - - if [ -z $_found_ssh_key ]; then - echo "Failed to find neither provided nor default SSH key" - exit 1 - fi -fi - -sudo -v - -if [ -d "$FINALDIR" ]; then - sudo rm -rf "$FINALDIR" -fi - -mkdir "$FINALDIR" - -# Extract rootfs from .gz file -( cd "$FINALDIR" && zcat $WORKDIR/build_files/corepure64.gz | sudo cpio -i -H newc -d ) - -# Setup Final Dir -setup_tce "$DST_DIR" - -# Modify ldconfig for x86-64 -$CHROOT_CMD cp /sbin/ldconfig /sbin/ldconfigold -printf '#!/bin/sh\n/sbin/ldconfigold $@ | sed -r "s/libc6|ELF/libc6,x86-64/"' | $CHROOT_CMD tee -a /sbin/ldconfignew -$CHROOT_CMD cp /sbin/ldconfignew /sbin/ldconfig -$CHROOT_CMD chmod u+x /sbin/ldconfig - -# Copy python wheels from build to final dir -cp -Rp "$BUILDDIR/tmp/wheels" "$FINALDIR/tmp/wheelhouse" - -cp $WORKDIR/build_files/tgt.* $FINALDIR/tmp/builtin/optional -cp $WORKDIR/build_files/qemu-utils.* $FINALDIR/tmp/builtin/optional -cp $WORKDIR/build_files/lshw.* $FINALDIR/tmp/builtin/optional - -if $TINYIPA_REQUIRE_BIOSDEVNAME; then - cp $WORKDIR/build_files/biosdevname.* $FINALDIR/tmp/builtin/optional -fi -if $TINYIPA_REQUIRE_IPMITOOL; then - cp $WORKDIR/build_files/ipmitool.* $FINALDIR/tmp/builtin/optional -fi - -mkdir $FINALDIR/tmp/overides -cp $WORKDIR/build_files/fakeuname $FINALDIR/tmp/overides/uname - -PY_REQS="finalreqs_python2.lst" -if [[ $USE_PYTHON3 == "True" ]]; then - PY_REQS="finalreqs_python3.lst" -fi - -while read line; do - $TC_CHROOT_CMD tce-load -wic $line -done < <(paste $WORKDIR/build_files/finalreqs.lst $WORKDIR/build_files/$PY_REQS) - -if $INSTALL_SSH ; then - # Install and configure bare minimum for SSH access - $TC_CHROOT_CMD tce-load -wic openssh - # Configure OpenSSH - $CHROOT_CMD cp /usr/local/etc/ssh/sshd_config.orig /usr/local/etc/ssh/sshd_config - echo "PasswordAuthentication no" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - # Generate and configure host keys - RSA, DSA, Ed25519 - # NOTE(pas-ha) ECDSA host key will still be re-generated fresh on every image boot - $CHROOT_CMD ssh-keygen -t rsa -N "" -f /usr/local/etc/ssh/ssh_host_rsa_key - $CHROOT_CMD ssh-keygen -t dsa -N "" -f /usr/local/etc/ssh/ssh_host_dsa_key - $CHROOT_CMD ssh-keygen -t ed25519 -N "" -f /usr/local/etc/ssh/ssh_host_ed25519_key - echo "HostKey /usr/local/etc/ssh/ssh_host_rsa_key" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - echo "HostKey /usr/local/etc/ssh/ssh_host_dsa_key" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - echo "HostKey /usr/local/etc/ssh/ssh_host_ed25519_key" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - - # setup user and SSH keys - if $AUTHORIZE_SSH; then - $CHROOT_CMD mkdir -p /home/tc - $CHROOT_CMD chown -R tc.staff /home/tc - $TC_CHROOT_CMD mkdir -p /home/tc/.ssh - cat $_found_ssh_key | $TC_CHROOT_CMD tee /home/tc/.ssh/authorized_keys - $CHROOT_CMD chown tc.staff /home/tc/.ssh/authorized_keys - $TC_CHROOT_CMD chmod 600 /home/tc/.ssh/authorized_keys - fi -fi - -$TC_CHROOT_CMD tce-load -ic /tmp/builtin/optional/tgt.tcz -$TC_CHROOT_CMD tce-load -ic /tmp/builtin/optional/qemu-utils.tcz -$TC_CHROOT_CMD tce-load -ic /tmp/builtin/optional/lshw.tcz -if $TINYIPA_REQUIRE_BIOSDEVNAME; then - $TC_CHROOT_CMD tce-load -ic /tmp/builtin/optional/biosdevname.tcz -fi -if $TINYIPA_REQUIRE_IPMITOOL; then - $TC_CHROOT_CMD tce-load -ic /tmp/builtin/optional/ipmitool.tcz -fi - -# Ensure tinyipa picks up installed kernel modules -$CHROOT_CMD depmod -a `$WORKDIR/build_files/fakeuname -r` - -PIP_COMMAND="pip" -TINYIPA_PYTHON_EXE="python" -if [[ $USE_PYTHON3 == "True" ]]; then - PIP_COMMAND="pip3" - TINYIPA_PYTHON_EXE="python3" -fi - -# Install pip -$CHROOT_CMD ${TINYIPA_PYTHON_EXE} -m ensurepip --upgrade - -# If flag is set install python now -if $BUILD_AND_INSTALL_TINYIPA ; then - $CHROOT_CMD $PIP_COMMAND install --no-index --find-links=file:///tmp/wheelhouse --pre ironic_python_agent - rm -rf $FINALDIR/tmp/wheelhouse -fi - -# Unmount /proc and clean up everything -cleanup_tce "$DST_DIR" - -# Copy bootlocal.sh to opt -sudo cp "$WORKDIR/build_files/bootlocal.sh" "$FINALDIR/opt/." - -# Copy udhcpc.script to opt -sudo cp "$WORKDIR/udhcpc.script" "$FINALDIR/opt/" - -# Replace etc/init.d/dhcp.sh -sudo cp "$WORKDIR/build_files/dhcp.sh" "$FINALDIR/etc/init.d/dhcp.sh" -sudo sed -i "s/%UDEV_SETTLE_TIMEOUT%/$TINYIPA_UDEV_SETTLE_TIMEOUT/" "$FINALDIR/etc/init.d/dhcp.sh" - -# Disable ZSwap -sudo sed -i '/# Main/a NOZSWAP=1' "$FINALDIR/etc/init.d/tc-config" -# sudo cp $WORKDIR/build_files/tc-config $FINALDIR/etc/init.d/tc-config - -if $PYOPTIMIZE_TINYIPA; then - # Precompile all python - if [[ $USE_PYTHON3 == "True" ]]; then - set +e - $CHROOT_CMD /bin/bash -c "python3 -OO -m compileall /usr/local/lib/python3.6" - set -e - find $FINALDIR/usr/local/lib/python3.6 -name "*.py" -not -path "*ironic_python_agent/api/config.py" | sudo xargs --no-run-if-empty rm - find $FINALDIR/usr/local/lib/python3.6 -name "*.pyc" ! -name "*opt-2*" | sudo xargs --no-run-if-empty rm - sudo find $FINALDIR/usr/local/lib/python3.6 -type d -name __pycache__ -exec sh -c 'cd "$1"; for f in *; do mv -i "$f" .. ; done' find-sh {} \; - find $FINALDIR/usr/local/lib/python3.6 -name "*.cpython-36.opt-2*" | sed 'p;s/\.cpython-36\.opt-2//' | sudo xargs -n2 --no-run-if-empty mv - fi - set +e - $CHROOT_CMD /bin/bash -c "python -OO -m compileall /usr/local/lib/python2.7" - set -e - find $FINALDIR/usr/local/lib/python2.7 -name "*.py" -not -path "*ironic_python_agent/api/config.py" | sudo xargs --no-run-if-empty rm - find $FINALDIR/usr/local/lib/python2.7 -name "*.pyc" | sudo xargs --no-run-if-empty rm - if $INSTALL_SSH && $AUTHORIZE_SSH ; then - # NOTE(pas-ha) for Ansible+Python to work we need to ensure that - # PYTHONOPTIMIZE=1 is set for all sessions from 'tc' user including - # those that are elevated with 'sudo' afterwards - echo "PYTHONOPTIMIZE=1" | $TC_CHROOT_CMD tee -a /home/tc/.ssh/environment - echo "PermitUserEnvironment yes" | $CHROOT_CMD tee -a /usr/local/etc/ssh/sshd_config - echo 'Defaults env_keep += "PYTHONOPTIMIZE"' | $CHROOT_CMD tee -a /etc/sudoers - fi -else - sudo sed -i "s/PYTHONOPTIMIZE=1/PYTHONOPTIMIZE=0/" "$FINALDIR/opt/bootlocal.sh" -fi - -# Delete unnecessary Babel .dat files -find $FINALDIR -path "*babel/locale-data/*.dat" -not -path "*en_US*" | sudo xargs --no-run-if-empty rm - -# NOTE(pas-ha) Apparently on TinyCore Ansible's 'command' module is -# not searching for executables in the '/usr/local/(s)bin' paths. -# Thus we symlink everything from there to '/usr/(s)bin' which is being searched, -# so that 'command' module picks full utilities installed by 'util-linux' -# instead of built-in simplified BusyBox ones. -set +x -echo "Symlink all from /usr/local/sbin to /usr/sbin" -pushd "$FINALDIR/usr/local/sbin" -for target in *; do - if [ ! -f "$FINALDIR/usr/sbin/$target" ]; then - $CHROOT_CMD ln -s "/usr/local/sbin/$target" "/usr/sbin/$target" - fi -done -popd -echo "Symlink all from /usr/local/bin to /usr/bin" -# this also includes symlinking Python to the place expected by Ansible -pushd "$FINALDIR/usr/local/bin" -for target in *; do - if [ ! -f "$FINALDIR/usr/bin/$target" ]; then - $CHROOT_CMD ln -s "/usr/local/bin/$target" "/usr/bin/$target" - fi -done -popd -set -x - -# Rebuild build directory into gz file -( cd "$FINALDIR" && sudo find | sudo cpio -o -H newc | gzip -9 > "$WORKDIR/tinyipa${BRANCH_EXT}.gz" ) - -# Copy vmlinuz to new name -cp "$WORKDIR/build_files/vmlinuz64" "$WORKDIR/tinyipa${BRANCH_EXT}.vmlinuz" - -# Create tar.gz containing tinyipa files -tar czf tinyipa${BRANCH_EXT}.tar.gz tinyipa${BRANCH_EXT}.gz tinyipa${BRANCH_EXT}.vmlinuz - -# Create sha256 files which will be uploaded by the publish jobs along with -# the tinyipa ones in order to provide a way to verify the integrity of the tinyipa -# builds. -for f in tinyipa${BRANCH_EXT}.{gz,tar.gz,vmlinuz}; do - sha256sum $f > $f.sha256 -done - -# Output files with sizes created by this script -echo "Produced files:" -du -h tinyipa${BRANCH_EXT}.gz tinyipa${BRANCH_EXT}.tar.gz tinyipa${BRANCH_EXT}.vmlinuz -echo "Checksums: " tinyipa${BRANCH_EXT}.*sha256 diff --git a/imagebuild/tinyipa/install-deps.sh b/imagebuild/tinyipa/install-deps.sh deleted file mode 100755 index 1c055544d..000000000 --- a/imagebuild/tinyipa/install-deps.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -COMMON_PACKAGES="wget python-pip unzip sudo gawk" -APT_PACKAGES="${COMMON_PACKAGES} squashfs-tools" -YUM_PACKAGES="${COMMON_PACKAGES} squashfs-tools" -ZYPPER_PACKAGES="${COMMON_PACKAGES} squashfs" - -echo "Installing dependencies:" - -# first zypper in case zypper-aptitude is installed -if [ -x "/usr/bin/zypper" ]; then - sudo -E zypper -n install -l ${ZYPPER_PACKAGES} -elif [ -x "/usr/bin/apt-get" ]; then - sudo -E apt-get update - sudo -E apt-get install -y ${APT_PACKAGES} -elif [ -x "/usr/bin/dnf" ]; then - sudo -E dnf install -y ${YUM_PACKAGES} -elif [ -x "/usr/bin/yum" ]; then - sudo -E yum install -y ${YUM_PACKAGES} -else - echo "No supported package manager installed on system. Supported: apt, yum, dnf, zypper" - exit 1 -fi diff --git a/imagebuild/tinyipa/tc-mirror.sh b/imagebuild/tinyipa/tc-mirror.sh deleted file mode 100644 index d7cd8b9f2..000000000 --- a/imagebuild/tinyipa/tc-mirror.sh +++ /dev/null @@ -1,53 +0,0 @@ - -#NOTE(pas-ha) -# The first URL is the official TC repo, -# the rest of the list is taken from -# http://wiki.tinycorelinux.net/wiki:mirrors -# as of time of this writing. -# Only HTTP mirrors were considered with the following ordering -# - those that were unavailable are moved to the bottom of the list -# - those that already responded with 404 are moved to the very bottom - -# List generated on 12-Dec-2016 -TC_MIRRORS="http://repo.tinycorelinux.net -http://distro.ibiblio.org/tinycorelinux -http://mirror.cedia.org.ec/tinycorelinux -http://mirror.epn.edu.ec/tinycorelinux -http://mirrors.163.com/tinycorelinux -http://kambing.ui.ac.id/tinycorelinux -http://ftp.nluug.nl/os/Linux/distr/tinycorelinux -http://ftp.vim.org/os/Linux/distr/tinycorelinux -http://www.gtlib.gatech.edu/pub/tinycore -http://tinycore.mirror.uber.com.au -http://l4u-00.jinr.ru/LinuxArchive/Ftp/tinycorelinux" - -function probe_url { - wget -q --spider --tries 1 --timeout 10 "$1" 2>&1 -} - -function choose_tc_mirror { - if [ -z ${TINYCORE_MIRROR_URL} ]; then - for url in ${TC_MIRRORS}; do - echo "Checking Tiny Core Linux mirror ${url}" - if probe_url ${url} ; then - echo "Check succeeded: ${url} is responding." - TINYCORE_MIRROR_URL=${url} - break - else - echo "Check failed: ${url} is not responding" - fi - done - if [ -z ${TINYCORE_MIRROR_URL} ]; then - echo "Failed to find working Tiny Core Linux mirror" - exit 1 - fi - else - echo "Probing provided Tiny Core Linux mirror ${TINYCORE_MIRROR_URL}" - if probe_url ${TINYCORE_MIRROR_URL} ; then - echo "Check succeeded: ${TINYCORE_MIRROR_URL} is responding." - else - echo "Check failed: ${TINYCORE_MIRROR_URL} is not responding" - exit 1 - fi - fi -} diff --git a/imagebuild/tinyipa/udhcpc.script b/imagebuild/tinyipa/udhcpc.script deleted file mode 100755 index 1de671ba3..000000000 --- a/imagebuild/tinyipa/udhcpc.script +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -# udhcpc script edited by Tim Riker - -# file created to be used for static network configuration as well - -[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 - -RESOLV_CONF="/etc/resolv.conf" -[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" -[ -n "$subnet" ] && NETMASK="netmask $subnet" - -case "$1" in - deconfig) - /sbin/ifconfig $interface 0.0.0.0 - ;; - - renew|bound) - /sbin/ifconfig $interface up - /sbin/ifconfig $interface $ip $BROADCAST $NETMASK - - if [ -n "$router" ] ; then - echo "deleting routers" - while route del default gw 0.0.0.0 dev $interface ; do - : - done - - metric=0 - for i in $router ; do - route add default gw $i dev $interface metric $((metric++)) - done - fi - - echo -n > $RESOLV_CONF - [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF - for i in $dns ; do - echo adding dns $i - echo nameserver $i >> $RESOLV_CONF - done - ;; -esac - -exit 0 - diff --git a/zuul.d/ironic-python-agent-jobs.yaml b/zuul.d/ironic-python-agent-jobs.yaml index 3f5700346..1423a371d 100644 --- a/zuul.d/ironic-python-agent-jobs.yaml +++ b/zuul.d/ironic-python-agent-jobs.yaml @@ -165,6 +165,7 @@ parent: metalsmith-integration-glance-localboot-centos7 required-projects: - openstack/ironic-python-agent + - openstack/ironic-python-agent-builder - openstack/ironic-lib vars: devstack_localrc: