From 4bdcf4f5bc026a056ce8f98e231cade07e1e7731 Mon Sep 17 00:00:00 2001 From: Kuralamudhan Ramakrishnan Date: Tue, 28 Apr 2020 20:09:01 +0000 Subject: [PATCH] adding icn version fixes in metal3 vm - adding fixes for the ubuntu installation - adding the version - adding clean up for directory Signed-off-by: Kuralamudhan Ramakrishnan Change-Id: Ic1402de69003dce3605c9cc8a5d8abe0ba90a22a --- deploy/metal3-vm/.gitignore | 1 + deploy/metal3-vm/02_configure_host.sh | 71 ++++++++++++++++--------- deploy/metal3-vm/03_launch_mgmt_cluster.sh | 30 ++++++++--- deploy/metal3-vm/05_host_cleanup.sh | 5 +- deploy/metal3-vm/lib/common.sh | 10 ++-- deploy/metal3-vm/ubuntu_install_requirements.sh | 4 +- 6 files changed, 82 insertions(+), 39 deletions(-) diff --git a/deploy/metal3-vm/.gitignore b/deploy/metal3-vm/.gitignore index 1ef75de..22fc63a 100644 --- a/deploy/metal3-vm/.gitignore +++ b/deploy/metal3-vm/.gitignore @@ -1,4 +1,5 @@ logs +ironic.env config_*.sh !config_example.sh master-0*.yaml diff --git a/deploy/metal3-vm/02_configure_host.sh b/deploy/metal3-vm/02_configure_host.sh index cf1ca17..e2d3c77 100755 --- a/deploy/metal3-vm/02_configure_host.sh +++ b/deploy/metal3-vm/02_configure_host.sh @@ -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,20 +161,14 @@ 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)" - if [[ "${CONTAINER_RUNTIME}" == "podman" ]]; then # Remove existing pod if sudo "${CONTAINER_RUNTIME}" pod exists ironic-pod ; then @@ -184,22 +181,48 @@ 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}" +cat < ${PWD}/ironic.env +PROVISIONING_INTERFACE=provisioning +DHCP_RANGE=172.22.0.10,172.22.0.100 +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 -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name httpd ${POD_NAME} \ - -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/runhttpd "${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 mariadb ${POD_NAME} \ - -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/runmariadb \ - --env MARIADB_PASSWORD="$mariadb_password" "${IRONIC_IMAGE}" +sudo "${CONTAINER_RUNTIME}" wait ipa-downloader -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}" diff --git a/deploy/metal3-vm/03_launch_mgmt_cluster.sh b/deploy/metal3-vm/03_launch_mgmt_cluster.sh index ab25c73..ef9f7d6 100755 --- a/deploy/metal3-vm/03_launch_mgmt_cluster.sh +++ b/deploy/metal3-vm/03_launch_mgmt_cluster.sh @@ -23,8 +23,8 @@ M3PATH="${GOPATH}/src/github.com/metal3-io" BMOPATH="${M3PATH}/baremetal-operator" BMOREPO="${BMOREPO:-https://github.com/metal3-io/baremetal-operator.git}" -BMOBRANCH="${BMOBRANCH:-3d40caa29dce82878d83aeb7f8dab4dc4a856160}" -FORCE_REPO_UPDATE="${FORCE_REPO_UPDATE:-false}" +BMOBRANCH="${BMOBRANCH:-10eb5aa3e614d0fdc6315026ebab061cbae6b929}" +FORCE_REPO_UPDATE="${FORCE_REPO_UPDATE:-true}" BMO_RUN_LOCAL="${BMO_RUN_LOCAL:-false}" COMPUTE_NODE_PASSWORD="${COMPUTE_NODE_PASSWORD:-mypasswd}" @@ -49,15 +49,29 @@ function clone_repos { } function launch_baremetal_operator { + docker pull integratedcloudnative/baremetal-operator:v1.0-icn + docker tag integratedcloudnative/baremetal-operator:v1.0-icn \ + quay.io/metal3-io/baremetal-operator:master + pushd "${BMOPATH}" if [ "${BMO_RUN_LOCAL}" = true ]; then - touch bmo.out.log - touch bmo.err.log - make deploy - kubectl scale deployment metal3-baremetal-operator -n metal3 --replicas=0 - nohup make run >> bmo.out.log 2>>bmo.err.log & + touch bmo.out.log + touch bmo.err.log + kubectl apply -f deploy/namespace/namespace.yaml + kubectl apply -f deploy/rbac/service_account.yaml -n metal3 + kubectl apply -f deploy/rbac/role.yaml -n metal3 + kubectl apply -f deploy/rbac/role_binding.yaml + kubectl apply -f deploy/crds/metal3.io_baremetalhosts_crd.yaml + kubectl apply -f deploy/operator/no_ironic/operator.yaml -n metal3 + kubectl scale deployment metal3-baremetal-operator -n metal3 --replicas=0 + nohup make run >> bmo.out.log 2>>bmo.err.log & else - make deploy + kubectl apply -f deploy/namespace/namespace.yaml + kubectl apply -f deploy/rbac/service_account.yaml -n metal3 + kubectl apply -f deploy/rbac/role.yaml -n metal3 + kubectl apply -f deploy/rbac/role_binding.yaml + kubectl apply -f deploy/crds/metal3.io_baremetalhosts_crd.yaml + kubectl apply -f deploy/operator/no_ironic/operator.yaml -n metal3 fi popd } diff --git a/deploy/metal3-vm/05_host_cleanup.sh b/deploy/metal3-vm/05_host_cleanup.sh index 5c49a35..0c83b56 100755 --- a/deploy/metal3-vm/05_host_cleanup.sh +++ b/deploy/metal3-vm/05_host_cleanup.sh @@ -7,7 +7,7 @@ source lib/logging.sh source lib/common.sh # Kill and remove the running ironic containers -for name in ironic ironic-inspector dnsmasq httpd mariadb; do +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 @@ -53,3 +53,6 @@ if [ "$MANAGE_BR_BRIDGE" == "y" ]; then sudo ifdown baremetal || true sudo rm -f /etc/sysconfig/network-scripts/ifcfg-baremetal || true fi + +rm -rf $WORKING_DIR +rm -rf $IRONIC_DATA_DIR diff --git a/deploy/metal3-vm/lib/common.sh b/deploy/metal3-vm/lib/common.sh index 7a32c49..034c243 100644 --- a/deploy/metal3-vm/lib/common.sh +++ b/deploy/metal3-vm/lib/common.sh @@ -36,7 +36,8 @@ ROOT_DISK_NAME=${ROOT_DISK_NAME-"/dev/sda"} CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-"docker"} export EXTERNAL_SUBNET="192.168.111.0/24" - +#Ironic data directory +IRONIC_DATA_DIR=${IRONIC_DATA_DIR:-"/opt/ironic"} export SSH_PUB_KEY=~/.ssh/id_rsa.pub FILESYSTEM=${FILESYSTEM:="/"} @@ -50,9 +51,10 @@ export NUM_WORKERS=${NUM_WORKERS:-"1"} export VM_EXTRADISKS=${VM_EXTRADISKS:-"false"} # Ironic vars -export IRONIC_IMAGE=${IRONIC_IMAGE:-"quay.io/metal3-io/ironic:master"} -export IRONIC_INSPECTOR_IMAGE=${IRONIC_INSPECTOR_IMAGE:-"quay.io/metal3-io/ironic-inspector"} -export IRONIC_DATA_DIR="$WORKING_DIR/ironic" +export IRONIC_IMAGE=${IRONIC_IMAGE:-"integratedcloudnative/ironic:v1.0-icn"} +export IRONIC_INSPECTOR_IMAGE=${IRONIC_INSPECTOR_IMAGE:-"integratedcloudnative/ironic-inspector:v1.0-icn"} +export IRONIC_BAREMETAL_IMAGE=${IRONIC_BAREMETAL_IMAGE:-"integratedcloudnative/baremetal-operator:v1.0-icn"} +export IPA_DOWNLOADER_IMAGE=${IPA_DOWNLOADER_IMAGE:-"integratedcloudnative/ironic-ipa-downloader:v1.0-icn"} # Verify requisites/permissions # Connect to system libvirt diff --git a/deploy/metal3-vm/ubuntu_install_requirements.sh b/deploy/metal3-vm/ubuntu_install_requirements.sh index a72152c..503813a 100755 --- a/deploy/metal3-vm/ubuntu_install_requirements.sh +++ b/deploy/metal3-vm/ubuntu_install_requirements.sh @@ -130,11 +130,11 @@ sudo pip install \ ansible==2.8.2 \ lolcat \ yq \ - virtualbmc \ + virtualbmc==1.6.0 \ python-ironicclient \ python-ironic-inspector-client \ lxml \ netaddr \ requests \ setuptools \ - libvirt-python \ + libvirt-python==5.7.0 \ -- 2.16.6