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
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
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 <<EOF > ${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}"
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}"
}
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
}
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:="/"}
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