diff --git a/assisted_deployment.sh b/assisted_deployment.sh index 8ee4b221a..9a518ef88 100755 --- a/assisted_deployment.sh +++ b/assisted_deployment.sh @@ -22,76 +22,9 @@ ASSISTED_OPERATOR_INDEX="${ASSISTED_OPERATOR_INDEX:-quay.io/ocpmetal/assisted-se ASSETS_DIR="${OCP_DIR}/saved-assets/assisted-installer-manifests" -function generate_local_storage() { - mkdir -p "${ASSETS_DIR}" - - cat >"${ASSETS_DIR}/01-local-storage-operator.yaml" <<EOF -apiVersion: operators.coreos.com/v1alpha2 -kind: OperatorGroup -metadata: - name: local-operator-group - namespace: openshift-local-storage -spec: - targetNamespaces: - - openshift-local-storage ---- -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: local-storage-operator - namespace: openshift-local-storage -spec: - installPlanApproval: Automatic - name: local-storage-operator - source: redhat-operators - sourceNamespace: openshift-marketplace -EOF - - cat >"${ASSETS_DIR}/02-local-volume.yaml" <<EOCR -apiVersion: local.storage.openshift.io/v1 -kind: LocalVolume -metadata: - name: assisted-service - namespace: openshift-local-storage -spec: - logLevel: Normal - managementState: Managed - storageClassDevices: -$(fill_local_storage) - storageClassName: assisted-service - volumeMode: Filesystem -EOCR -} - - -function fill_local_storage() { - if [ ! -z "${VM_EXTRADISKS_LIST}" ]; then -cat <<EOF - - devicePaths: -EOF - fi - - for disk in ${VM_EXTRADISKS_LIST}; do -cat <<EOF - - /dev/$disk -EOF - done -} - - function deploy_local_storage() { - oc adm new-project openshift-local-storage || true - - oc annotate project openshift-local-storage openshift.io/node-selector='' - - generate_local_storage - - echo "Creating local storage operator group and subscription..." - oc apply -f "${ASSETS_DIR}/01-local-storage-operator.yaml" - wait_for_crd "localvolumes.local.storage.openshift.io" - - echo "Creating local volume and storage class..." - oc apply -f "${ASSETS_DIR}/02-local-volume.yaml" + export STORAGE_CLASS_NAME="assisted-service" + ${SCRIPTDIR}/enable_local_storage.sh } diff --git a/common.sh b/common.sh index ed9f9c298..af8844215 100644 --- a/common.sh +++ b/common.sh @@ -247,7 +247,7 @@ export NUM_WORKERS=${NUM_WORKERS:-"2"} export NUM_EXTRA_WORKERS=${NUM_EXTRA_WORKERS:-"0"} export EXTRA_WORKERS_ONLINE_STATUS=${EXTRA_WORKERS_ONLINE_STATUS:-"true"} export VM_EXTRADISKS=${VM_EXTRADISKS:-"false"} -export VM_EXTRADISKS_LIST=${VM_EXTRADISKS_LIST:-"vdb"} +export VM_EXTRADISKS_LIST=${VM_EXTRADISKS_LIST:-"vda"} export VM_EXTRADISKS_SIZE=${VM_EXTRADISKS_SIZE:-"8G"} export MASTER_HOSTNAME_FORMAT=${MASTER_HOSTNAME_FORMAT:-"master-%d"} export WORKER_HOSTNAME_FORMAT=${WORKER_HOSTNAME_FORMAT:-"worker-%d"} diff --git a/enable_local_storage.sh b/enable_local_storage.sh new file mode 100755 index 000000000..8ddafc9b8 --- /dev/null +++ b/enable_local_storage.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +set -eux -o pipefail + +source logging.sh +source common.sh +source utils.sh + +ASSETS_DIR=${ASSETS_DIR:-"${OCP_DIR}/enable-local-storage"} +STORAGE_CLASS_NAME=${STORAGE_CLASS_NAME:-local-storage} + + +function generate_subscription() { + mkdir -p "${ASSETS_DIR}" + + cat >"${ASSETS_DIR}/01-local-storage-operator.yaml" <<EOF +apiVersion: operators.coreos.com/v1alpha2 +kind: OperatorGroup +metadata: + name: local-operator-group + namespace: openshift-local-storage +spec: + targetNamespaces: + - openshift-local-storage +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: local-storage-operator + namespace: openshift-local-storage +spec: + installPlanApproval: Automatic + name: local-storage-operator + source: redhat-operators + sourceNamespace: openshift-marketplace +EOF +} + +function generate_local_volume() { + mkdir -p "${ASSETS_DIR}" + + cat >"${ASSETS_DIR}/02-local-volume.yaml" <<EOCR +apiVersion: local.storage.openshift.io/v1 +kind: LocalVolume +metadata: + name: ${STORAGE_CLASS_NAME} + namespace: openshift-local-storage +spec: + logLevel: Normal + managementState: Managed + storageClassDevices: +$(fill_local_storage) + storageClassName: ${STORAGE_CLASS_NAME} + volumeMode: Filesystem +EOCR +} + + +function fill_local_storage() { + if [ ! -z "${VM_EXTRADISKS_LIST}" ]; then +cat <<EOF + - devicePaths: +EOF + fi + + for disk in ${VM_EXTRADISKS_LIST}; do +cat <<EOF + - /dev/$disk +EOF + done +} + + +function deploy_local_storage() { + oc adm new-project openshift-local-storage || true + + oc annotate --overwrite project openshift-local-storage openshift.io/node-selector='' + +if [[ "$OPENSHIFT_RELEASE_TYPE" == "ga" ]]; then + generate_subscription + echo "Creating local storage operator group and subscription..." + oc apply -f "${ASSETS_DIR}/01-local-storage-operator.yaml" +else + oc project openshift-local-storage + LSO_PATH=${LOCAL_STORAGE_OPERATOR_PATH:-$GOPATH/src/github.com/openshift/local-storage-operator} + if [ ! -d $LSO_PATH ]; then + echo "Did not find $LSO_PATH" 1>&2 + exit 1 + fi + pushd ${LSO_PATH} + make build + # Run make deploy steps manually so we can override the default namespace + pushd config/manager + kustomize edit set image controller=controller:latest + popd + pushd config/default + kustomize edit set namespace openshift-local-storage + popd + kustomize build config/default | oc apply -f - + popd +fi + wait_for_crd "localvolumes.local.storage.openshift.io" + + generate_local_volume + echo "Creating local volume and storage class..." + oc apply -f "${ASSETS_DIR}/02-local-volume.yaml" +} + + +if [ "${VM_EXTRADISKS}" != "false" ]; then + deploy_local_storage +else + echo "Cannot deploy local storage unless VM_EXTRADISKS is enabled" + exit 1 +fi diff --git a/vm_setup_vars.yml b/vm_setup_vars.yml index c0fb31fd9..fb676bd7f 100644 --- a/vm_setup_vars.yml +++ b/vm_setup_vars.yml @@ -10,7 +10,7 @@ ironic_prefix: "{{ ironic_prefix }}" num_masters: 3 num_workers: 1 num_extraworkers: 0 -extradisks_list: "{{ lookup('env', 'VM_EXTRADISKS_LIST').split(' ') | default(['vdb']) }}" +extradisks_list: "{{ lookup('env', 'VM_EXTRADISKS_LIST').split(' ') | default(['vda']) }}" extradisks_size: "{{ lookup('env', 'VM_EXTRADISKS_SIZE') | default(['8G']) }}" flavors: master: