X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=deploy%2Fmetal3-vm%2F02_configure_host.sh;h=c31652210e9b27ca066259110bbd9d4ef3158634;hb=ec258715d6f8d779d79555a7c75ba28d4fef9170;hp=cf1ca17a679aeecc63a40c9da55dcfd52ac0873e;hpb=97aec506decb655c865452acb5b5fcef72bb8673;p=icn.git diff --git a/deploy/metal3-vm/02_configure_host.sh b/deploy/metal3-vm/02_configure_host.sh index cf1ca17..c316522 100755 --- a/deploy/metal3-vm/02_configure_host.sh +++ b/deploy/metal3-vm/02_configure_host.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -set -xe +set -eux -o pipefail # shellcheck disable=SC1091 source lib/logging.sh @@ -63,14 +63,14 @@ else if [ ! -e /etc/sysconfig/network-scripts/ifcfg-provisioning ] ; then echo -e "DEVICE=provisioning\nTYPE=Bridge\nONBOOT=yes\nNM_CONTROLLED=no\nBOOTPROTO=static\nIPADDR=172.22.0.1\nNETMASK=255.255.255.0" | sudo dd of=/etc/sysconfig/network-scripts/ifcfg-provisioning fi - sudo ifdown provisioning || true - sudo ifup provisioning + sudo ip link set dev provisioning down || true + sudo ip link set dev provisioning up # Need to pass the provision interface for bare metal if [ "$PRO_IF" ]; then echo -e "DEVICE=$PRO_IF\nTYPE=Ethernet\nONBOOT=yes\nNM_CONTROLLED=no\nBRIDGE=provisioning" | sudo dd of="/etc/sysconfig/network-scripts/ifcfg-$PRO_IF" - sudo ifdown "$PRO_IF" || true - sudo ifup "$PRO_IF" + sudo ip link set dev "$PRO_IF" down || true + sudo ip link set dev "$PRO_IF" up fi fi @@ -79,8 +79,8 @@ else if [ ! -e /etc/sysconfig/network-scripts/ifcfg-baremetal ] ; then echo -e "DEVICE=baremetal\nTYPE=Bridge\nONBOOT=yes\nNM_CONTROLLED=no" | sudo dd of=/etc/sysconfig/network-scripts/ifcfg-baremetal fi - sudo ifdown baremetal || true - sudo ifup baremetal + sudo ip link set dev baremetal down || true + sudo ip link set dev baremetal up # Add the internal interface to it if requests, this may also be the interface providing # external access so we need to make sure we maintain dhcp config if its available @@ -100,7 +100,7 @@ else sudo virsh net-destroy baremetal sudo virsh net-start baremetal if [ "$INT_IF" ]; then #Need to bring UP the NIC after destroying the libvirt network - sudo ifup "$INT_IF" + sudo ip link set dev "$INT_IF" up fi fi fi @@ -145,11 +145,14 @@ if [[ "$MANAGE_BR_BRIDGE" == "y" && $OS == "centos" ]] ; then fi fi +for name in ironic ironic-inspector dnsmasq httpd mariadb ipa-downloader; do + sudo "${CONTAINER_RUNTIME}" ps | grep -w "$name$" && sudo "${CONTAINER_RUNTIME}" kill $name + sudo "${CONTAINER_RUNTIME}" ps --all | grep -w "$name$" && sudo "${CONTAINER_RUNTIME}" rm $name -f +done +rm -rf "$IRONIC_DATA_DIR" + mkdir -p "$IRONIC_DATA_DIR/html/images" pushd "$IRONIC_DATA_DIR/html/images" -if [ ! -f ironic-python-agent.initramfs ]; then - curl --insecure --compressed -L https://images.rdoproject.org/master/rdo_trunk/current-tripleo-rdo/ironic-python-agent.tar | tar -xf - -fi BM_IMAGE=${BM_IMAGE:-"bionic-server-cloudimg-amd64.img"} BM_IMAGE_URL=${BM_IMAGE_URL:-"https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img"} if [ ! -f ${BM_IMAGE} ] ; then @@ -158,48 +161,63 @@ if [ ! -f ${BM_IMAGE} ] ; then fi popd -for IMAGE_VAR in IRONIC_IMAGE IRONIC_INSPECTOR_IMAGE ; do +for IMAGE_VAR in IRONIC_IMAGE IRONIC_INSPECTOR_IMAGE IPA_DOWNLOADER_IMAGE; do IMAGE=${!IMAGE_VAR} sudo "${CONTAINER_RUNTIME}" pull "$IMAGE" done -for name in ironic ironic-inspector dnsmasq httpd mariadb; do - sudo "${CONTAINER_RUNTIME}" ps | grep -w "$name$" && sudo "${CONTAINER_RUNTIME}" kill $name - sudo "${CONTAINER_RUNTIME}" ps --all | grep -w "$name$" && sudo "${CONTAINER_RUNTIME}" rm $name -f -done - # set password for mariadb mariadb_password="$(echo "$(date;hostname)"|sha256sum |cut -c-20)" +cat < ${PWD}/ironic.env +PROVISIONING_INTERFACE=provisioning +DHCP_RANGE=172.22.0.10,172.22.0.100 +IPA_BASEURI=https://images.rdoproject.org/train/rdo_trunk/current-tripleo +DEPLOY_KERNEL_URL=http://172.22.0.1/images/ironic-python-agent.kernel +DEPLOY_RAMDISK_URL=http://172.22.0.1/images/ironic-python-agent.initramfs +IRONIC_ENDPOINT=http://172.22.0.1:6385/v1/ +IRONIC_INSPECTOR_ENDPOINT=http://172.22.0.1:5050/v1/ +CACHEURL=http://172.22.0.1/images +IRONIC_FAST_TRACK=false +EOF -if [[ "${CONTAINER_RUNTIME}" == "podman" ]]; then - # Remove existing pod - if sudo "${CONTAINER_RUNTIME}" pod exists ironic-pod ; then - sudo "${CONTAINER_RUNTIME}" pod rm ironic-pod -f - fi - # Create pod - sudo "${CONTAINER_RUNTIME}" pod create -n ironic-pod - POD_NAME="--pod ironic-pod" -else - POD_NAME="" -fi - -mkdir -p "$IRONIC_DATA_DIR" - -# Start dnsmasq, http, mariadb, and ironic containers using same image -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name dnsmasq ${POD_NAME} \ - -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/rundnsmasq "${IRONIC_IMAGE}" +# Start image downloader container +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name ipa-downloader \ + --env-file "${PWD}/ironic.env" \ + -v "$IRONIC_DATA_DIR:/shared" "${IPA_DOWNLOADER_IMAGE}" /usr/local/bin/get-resource.sh -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name httpd ${POD_NAME} \ - -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/runhttpd "${IRONIC_IMAGE}" +sudo "${CONTAINER_RUNTIME}" wait ipa-downloader -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name mariadb ${POD_NAME} \ - -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/runmariadb \ - --env MARIADB_PASSWORD="$mariadb_password" "${IRONIC_IMAGE}" +if [ ! -e "$IRONIC_DATA_DIR/html/images/ironic-python-agent.kernel" ] || + [ ! -e "$IRONIC_DATA_DIR/html/images/ironic-python-agent.initramfs" ]; then + echo "Failed to get ironic-python-agent" + exit 1 +fi -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name ironic ${POD_NAME} \ - --env MARIADB_PASSWORD="$mariadb_password" \ - -v "$IRONIC_DATA_DIR":/shared "${IRONIC_IMAGE}" +# Start dnsmasq, http, mariadb, and ironic containers using same image +# See this file for env vars you can set, like IP, DHCP_RANGE, INTERFACE +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name dnsmasq \ + --env-file "${PWD}/ironic.env" \ + -v "$IRONIC_DATA_DIR:/shared" --entrypoint /bin/rundnsmasq "${IRONIC_IMAGE}" + +# For available env vars, see: +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name httpd \ + --env-file "${PWD}/ironic.env" \ + -v "$IRONIC_DATA_DIR:/shared" --entrypoint /bin/runhttpd "${IRONIC_IMAGE}" + +# https://github.com/metal3-io/ironic/blob/master/runmariadb.sh +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name mariadb \ + --env-file "${PWD}/ironic.env" \ + -v "$IRONIC_DATA_DIR:/shared" --entrypoint /bin/runmariadb \ + --env "MARIADB_PASSWORD=$mariadb_password" "${IRONIC_IMAGE}" + +# See this file for additional env vars you may want to pass, like IP and INTERFACE +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name ironic \ + --env-file "${PWD}/ironic.env" \ + --env "MARIADB_PASSWORD=$mariadb_password" \ + -v "$IRONIC_DATA_DIR:/shared" "${IRONIC_IMAGE}" # Start Ironic Inspector -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name ironic-inspector ${POD_NAME} "${IRONIC_INSPECTOR_IMAGE}" +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name ironic-inspector \ + --env-file "${PWD}/ironic.env" \ + -v "$IRONIC_DATA_DIR:/shared" "${IRONIC_INSPECTOR_IMAGE}"