diff --git a/02_configure_host.sh b/02_configure_host.sh index e34bcfee6..0544ddcb7 100755 --- a/02_configure_host.sh +++ b/02_configure_host.sh @@ -11,10 +11,6 @@ if [ ! -f "$HOME/.ssh/id_rsa.pub" ]; then ssh-keygen -f ~/.ssh/id_rsa -P "" fi -# Start httpd container -sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name httpd ${POD_NAME} \ - -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/runhttpd "${IRONIC_IMAGE}" - # root needs a private key to talk to libvirt # See tripleo-quickstart-config/roles/virtbmc/tasks/configure-vbmc.yml if sudo [ ! -f /root/.ssh/id_rsa_virt_power ]; then @@ -128,6 +124,41 @@ if [[ "$MANAGE_BR_BRIDGE" == "y" && $OS == "centos" ]] ; then fi fi +# Needed if we're going to use any locally built images +reg_state=$(sudo "$CONTAINER_RUNTIME" inspect registry --format "{{.State.Status}}" || echo "error") +if [[ "$reg_state" != "running" ]]; then + sudo "${CONTAINER_RUNTIME}" rm registry -f || true + sudo "${CONTAINER_RUNTIME}" run -d -p 5000:5000 --name registry "$DOCKER_REGISTRY_IMAGE" +fi + +# Support for building local images +for IMAGE_VAR in $(env | grep "_LOCAL_IMAGE=" | grep -o "^[^=]*") ; do + IMAGE=${!IMAGE_VAR} + + # Is it a git repo? + if [[ "$IMAGE" =~ "://" ]] ; then + REPOPATH=~/${IMAGE##*/} + # Clone to ~ if not there already + [ -e "$REPOPATH" ] || git clone "$IMAGE" "$REPOPATH" + cd "$REPOPATH" || exit + #shellcheck disable=SC2086 + export $IMAGE_VAR="${IMAGE##*/}:latest" + #shellcheck disable=SC2086 + export $IMAGE_VAR="192.168.111.1:5000/localimages/${!IMAGE_VAR}" + sudo "${CONTAINER_RUNTIME}" build -t "${!IMAGE_VAR}" . + cd - || exit + sudo "${CONTAINER_RUNTIME}" push --tls-verify=false "${!IMAGE_VAR}" "${!IMAGE_VAR}" + fi +done + +IRONIC_IMAGE=${IRONIC_LOCAL_IMAGE:-$IRONIC_IMAGE} +VMBC_IMAGE=${VBMC_LOCAL_IMAGE:-$VMBC_IMAGE} +SUSHY_TOOLS_IMAGE=${SUSHY_TOOLS_LOCAL_IMAGE:-$SUSHY_TOOLS_IMAGE} + +# Start httpd container +sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name httpd ${POD_NAME} \ + -v "$IRONIC_DATA_DIR":/shared --entrypoint /bin/runhttpd "${IRONIC_IMAGE}" + # Start vbmc and sushy containers sudo "${CONTAINER_RUNTIME}" run -d --net host --privileged --name vbmc ${POD_NAME} \ -v "$WORKING_DIR/virtualbmc/vbmc":/root/.vbmc -v "/root/.ssh":/root/ssh \ diff --git a/03_launch_mgmt_cluster.sh b/03_launch_mgmt_cluster.sh index c926d8688..e0efce5ea 100755 --- a/03_launch_mgmt_cluster.sh +++ b/03_launch_mgmt_cluster.sh @@ -71,16 +71,46 @@ function clone_repos() { popd } +function kustomize_overlay() { + overlay_path=$1 +cat < "$overlay_path/kustomization.yaml" +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- $(realpath --relative-to="$overlay_path" "$BMOPATH/deploy") +EOF +} + function launch_baremetal_operator() { pushd "${BMOPATH}" + kustomize_overlay_path=$(mktemp -d bmo-XXXXXXXXXX) + kustomize_overlay "$kustomize_overlay_path" + pushd "$kustomize_overlay_path" + + # Add custom images in overlay + for IMAGE_VAR in $(env | grep "_LOCAL_IMAGE=" | grep -o "^[^=]*") ; do + IMAGE=${!IMAGE_VAR} + if [[ "$IMAGE" =~ "://" ]] ; then + #shellcheck disable=SC2086 + IMAGE_NAME="${IMAGE##*/}:latest" + LOCAL_IMAGE="192.168.111.1:5000/localimages/$IMAGE_NAME" + fi + + OLD_IMAGE_VAR="${IMAGE_VAR%_LOCAL_IMAGE}_IMAGE" + OLD_IMAGE=${!OLD_IMAGE_VAR} + #shellcheck disable=SC2086 + kustomize edit set image $OLD_IMAGE=$LOCAL_IMAGE + done + popd + if [ "${BMO_RUN_LOCAL}" = true ]; then touch bmo.out.log touch bmo.err.log - make deploy + kustomize build "$kustomize_overlay_path" | kubectl apply -f- kubectl scale deployment metal3-baremetal-operator -n metal3 --replicas=0 nohup make run >> bmo.out.log 2>>bmo.err.log & else - make deploy + kustomize build "$kustomize_overlay_path" | kubectl apply -f- fi popd } diff --git a/lib/common.sh b/lib/common.sh index d94845800..bba5de091 100644 --- a/lib/common.sh +++ b/lib/common.sh @@ -56,6 +56,9 @@ export NUM_MASTERS=${NUM_MASTERS:-"1"} export NUM_WORKERS=${NUM_WORKERS:-"1"} export VM_EXTRADISKS=${VM_EXTRADISKS:-"false"} +# Docker registry for local images +export DOCKER_REGISTRY_IMAGE=${DOCKER_REGISTRY_IMAGE:-"docker.io/registry:latest"} + # VBMC and Redfish images export VBMC_IMAGE=${VBMC_IMAGE:-"quay.io/metal3-io/vbmc"} export SUSHY_TOOLS_IMAGE=${SUSHY_TOOLS_IMAGE:-"quay.io/metal3-io/sushy-tools"} @@ -281,7 +284,7 @@ differs(){ function init_minikube() { #If the vm exists, it has already been initialized if [[ "$(sudo virsh list --all)" != *"minikube"* ]]; then - sudo su -l -c "minikube start" "$USER" + sudo su -l -c "minikube start --insecure-registry 192.168.111.1:5000" "$USER" # Pre-pull the image to reduce pod initialization time for IMAGE_VAR in IRONIC_IMAGE IPA_DOWNLOADER_IMAGE IRONIC_INSPECTOR_IMAGE BAREMETAL_OPERATOR_IMAGE; do IMAGE=${!IMAGE_VAR}