Skip to content

Commit b7d8606

Browse files
authored
Merge branch 'main' into mgmt-23250
2 parents 5c738f9 + 597dbcb commit b7d8606

38 files changed

Lines changed: 807 additions & 202 deletions

.github/workflows/nightly-e2e-connected.yml

Lines changed: 95 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ on:
99
- cron: '0 3 * * *'
1010
workflow_dispatch:
1111
# Allow manual triggering for testing
12+
inputs:
13+
send-slack-notification:
14+
description: 'Send Slack notification on completion'
15+
required: false
16+
type: boolean
17+
default: false
1218

1319
# Prevent concurrent nightly runs
1420
concurrency:
@@ -41,11 +47,8 @@ jobs:
4147

4248
- name: Setup cluster-specific working directory
4349
run: |
44-
CLUSTER_WORKING_DIR="${BASE_WORKING_DIR}/clusters/${ENCLAVE_CLUSTER_NAME}"
45-
echo "Creating cluster-specific working directory: $CLUSTER_WORKING_DIR"
46-
mkdir -p "$CLUSTER_WORKING_DIR"
47-
echo "WORKING_DIR=$CLUSTER_WORKING_DIR" >> $GITHUB_ENV
48-
echo "Cluster working directory: $CLUSTER_WORKING_DIR"
50+
make setup-working-dir
51+
echo "WORKING_DIR=$(cat /tmp/working_dir)" >> $GITHUB_ENV
4952
5053
- name: Workflow information
5154
run: |
@@ -64,31 +67,102 @@ jobs:
6467
- name: Allocate unique subnet for cluster
6568
uses: ./.github/actions/allocate-subnet
6669

67-
- name: Clean infrastructure
68-
id: clean
70+
- name: Create infrastructure
71+
env:
72+
WORKING_DIR: ${{ env.WORKING_DIR }}
6973
run: |
70-
echo "## Cleanup" >> $GITHUB_STEP_SUMMARY
74+
echo "## Creating Infrastructure" >> $GITHUB_STEP_SUMMARY
7175
echo "" >> $GITHUB_STEP_SUMMARY
72-
echo "Cleaning up any leftover infrastructure..." >> $GITHUB_STEP_SUMMARY
76+
echo "Creating VMs, networks, and BMC emulation..." >> $GITHUB_STEP_SUMMARY
77+
echo "Using subnet: ${ENCLAVE_SUBNET_ID:-not-set}" >> $GITHUB_STEP_SUMMARY
78+
echo "BMC Network: ${ENCLAVE_BMC_NETWORK:-not-set}" >> $GITHUB_STEP_SUMMARY
79+
echo "Cluster Network: ${ENCLAVE_CLUSTER_NETWORK:-not-set}" >> $GITHUB_STEP_SUMMARY
80+
echo "Working Directory: ${WORKING_DIR:-not-set}" >> $GITHUB_STEP_SUMMARY
7381
74-
make clean
82+
make environment
83+
echo "✅ Infrastructure created" >> $GITHUB_STEP_SUMMARY
84+
85+
- name: Provision Landing Zone
86+
run: |
87+
echo "## Provisioning Landing Zone" >> $GITHUB_STEP_SUMMARY
88+
echo "" >> $GITHUB_STEP_SUMMARY
89+
echo "Installing CentOS Stream and configuring Landing Zone VM..." >> $GITHUB_STEP_SUMMARY
90+
make provision-landing-zone
91+
echo "✅ Landing Zone provisioned" >> $GITHUB_STEP_SUMMARY
92+
93+
- name: Install Enclave Lab
94+
run: |
95+
echo "## Installing Enclave Lab" >> $GITHUB_STEP_SUMMARY
96+
echo "" >> $GITHUB_STEP_SUMMARY
97+
echo "Installing dev-scripts and required packages on Landing Zone..." >> $GITHUB_STEP_SUMMARY
98+
make install-enclave
99+
echo "✅ Enclave Lab installed" >> $GITHUB_STEP_SUMMARY
100+
101+
- name: Phase 1 - Prepare binaries and content
102+
id: deploy_prepare
103+
run: |
104+
echo "## Phase 1: Prepare" >> $GITHUB_STEP_SUMMARY
105+
echo "" >> $GITHUB_STEP_SUMMARY
106+
echo "Downloading OpenShift binaries and content..." >> $GITHUB_STEP_SUMMARY
107+
108+
make deploy-cluster-prepare
109+
110+
echo "✅ Phase 1 complete" >> $GITHUB_STEP_SUMMARY
75111
76-
echo "✅ Cleanup complete" >> $GITHUB_STEP_SUMMARY
112+
- name: Phase 2 - Deploy OpenShift cluster
113+
id: deploy_install
114+
run: |
115+
echo "## Phase 2: Deploy Cluster" >> $GITHUB_STEP_SUMMARY
116+
echo "" >> $GITHUB_STEP_SUMMARY
117+
echo "Deploying OpenShift cluster (mode: connected)..." >> $GITHUB_STEP_SUMMARY
77118
78-
- name: Setup infrastructure
79-
uses: ./.github/actions/setup-infrastructure
119+
make deploy-cluster-install
80120
81-
- name: Deploy OpenShift cluster
82-
id: deploy_cluster
121+
echo "✅ Phase 2 complete - Cluster deployed" >> $GITHUB_STEP_SUMMARY
122+
123+
- name: Phase 3 - Post-install configuration
124+
id: deploy_post_install
83125
run: |
84-
echo "## Deploying OpenShift Cluster (Connected Mode)" >> $GITHUB_STEP_SUMMARY
126+
echo "## Phase 3: Post-Install Configuration" >> $GITHUB_STEP_SUMMARY
85127
echo "" >> $GITHUB_STEP_SUMMARY
86-
echo "Starting deployment in connected mode..." >> $GITHUB_STEP_SUMMARY
87-
echo "Expected duration: ~60 minutes" >> $GITHUB_STEP_SUMMARY
128+
echo "Configuring cluster (secrets, certificates, API health)..." >> $GITHUB_STEP_SUMMARY
88129
89-
make deploy-cluster
130+
make deploy-cluster-post-install
90131
91-
echo "✅ Cluster deployment complete" >> $GITHUB_STEP_SUMMARY
132+
echo "✅ Phase 3 complete" >> $GITHUB_STEP_SUMMARY
133+
134+
- name: Phase 4 - Install operators
135+
id: deploy_operators
136+
run: |
137+
echo "## Phase 4: Operators" >> $GITHUB_STEP_SUMMARY
138+
echo "" >> $GITHUB_STEP_SUMMARY
139+
echo "Installing and configuring operators..." >> $GITHUB_STEP_SUMMARY
140+
141+
make deploy-cluster-operators
142+
143+
echo "✅ Phase 4 complete" >> $GITHUB_STEP_SUMMARY
144+
145+
- name: Phase 5 - Day-2 operations
146+
id: deploy_day2
147+
run: |
148+
echo "## Phase 5: Day-2 Operations" >> $GITHUB_STEP_SUMMARY
149+
echo "" >> $GITHUB_STEP_SUMMARY
150+
echo "Configuring advanced features and policies..." >> $GITHUB_STEP_SUMMARY
151+
152+
make deploy-cluster-day2
153+
154+
echo "✅ Phase 5 complete" >> $GITHUB_STEP_SUMMARY
155+
156+
- name: Phase 6 - Configure hardware discovery
157+
id: deploy_discovery
158+
run: |
159+
echo "## Phase 6: Hardware Discovery" >> $GITHUB_STEP_SUMMARY
160+
echo "" >> $GITHUB_STEP_SUMMARY
161+
echo "Configuring hardware discovery infrastructure..." >> $GITHUB_STEP_SUMMARY
162+
163+
make deploy-cluster-discovery
164+
165+
echo "✅ Phase 6 complete - Full deployment complete" >> $GITHUB_STEP_SUMMARY
92166
93167
- name: Verify cluster deployment
94168
if: success()
@@ -134,7 +208,7 @@ jobs:
134208
echo "- **Status**: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY
135209
136210
- name: Notify Slack
137-
if: always()
211+
if: always() && (github.event_name == 'schedule' || inputs.send-slack-notification == true)
138212
uses: ./.github/actions/notify-slack
139213
with:
140214
status: ${{ job.status }}

.github/workflows/nightly-e2e-disconnected.yml

Lines changed: 105 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ on:
99
- cron: '0 3 * * *'
1010
workflow_dispatch:
1111
# Allow manual triggering for testing
12+
inputs:
13+
send-slack-notification:
14+
description: 'Send Slack notification on completion'
15+
required: false
16+
type: boolean
17+
default: false
1218

1319
# Prevent concurrent nightly runs
1420
concurrency:
@@ -41,11 +47,8 @@ jobs:
4147

4248
- name: Setup cluster-specific working directory
4349
run: |
44-
CLUSTER_WORKING_DIR="${BASE_WORKING_DIR}/clusters/${ENCLAVE_CLUSTER_NAME}"
45-
echo "Creating cluster-specific working directory: $CLUSTER_WORKING_DIR"
46-
mkdir -p "$CLUSTER_WORKING_DIR"
47-
echo "WORKING_DIR=$CLUSTER_WORKING_DIR" >> $GITHUB_ENV
48-
echo "Cluster working directory: $CLUSTER_WORKING_DIR"
50+
make setup-working-dir
51+
echo "WORKING_DIR=$(cat /tmp/working_dir)" >> $GITHUB_ENV
4952
5053
- name: Workflow information
5154
run: |
@@ -64,40 +67,113 @@ jobs:
6467
- name: Allocate unique subnet for cluster
6568
uses: ./.github/actions/allocate-subnet
6669

67-
- name: Clean infrastructure
68-
id: clean
70+
- name: Create infrastructure
71+
env:
72+
WORKING_DIR: ${{ env.WORKING_DIR }}
6973
run: |
70-
echo "## Cleanup" >> $GITHUB_STEP_SUMMARY
74+
echo "## Creating Infrastructure" >> $GITHUB_STEP_SUMMARY
7175
echo "" >> $GITHUB_STEP_SUMMARY
72-
echo "Cleaning up any leftover infrastructure..." >> $GITHUB_STEP_SUMMARY
76+
echo "Creating VMs, networks, and BMC emulation..." >> $GITHUB_STEP_SUMMARY
77+
echo "Using subnet: ${ENCLAVE_SUBNET_ID:-not-set}" >> $GITHUB_STEP_SUMMARY
78+
echo "BMC Network: ${ENCLAVE_BMC_NETWORK:-not-set}" >> $GITHUB_STEP_SUMMARY
79+
echo "Cluster Network: ${ENCLAVE_CLUSTER_NETWORK:-not-set}" >> $GITHUB_STEP_SUMMARY
80+
echo "Working Directory: ${WORKING_DIR:-not-set}" >> $GITHUB_STEP_SUMMARY
7381
74-
make clean
82+
make environment
83+
echo "✅ Infrastructure created" >> $GITHUB_STEP_SUMMARY
84+
85+
- name: Provision Landing Zone
86+
run: |
87+
echo "## Provisioning Landing Zone" >> $GITHUB_STEP_SUMMARY
88+
echo "" >> $GITHUB_STEP_SUMMARY
89+
echo "Installing CentOS Stream and configuring Landing Zone VM..." >> $GITHUB_STEP_SUMMARY
90+
make provision-landing-zone
91+
echo "✅ Landing Zone provisioned" >> $GITHUB_STEP_SUMMARY
92+
93+
- name: Install Enclave Lab
94+
run: |
95+
echo "## Installing Enclave Lab" >> $GITHUB_STEP_SUMMARY
96+
echo "" >> $GITHUB_STEP_SUMMARY
97+
echo "Installing dev-scripts and required packages on Landing Zone..." >> $GITHUB_STEP_SUMMARY
98+
make install-enclave
99+
echo "✅ Enclave Lab installed" >> $GITHUB_STEP_SUMMARY
100+
101+
- name: Phase 1 - Prepare binaries and content
102+
id: deploy_prepare
103+
run: |
104+
echo "## Phase 1: Prepare" >> $GITHUB_STEP_SUMMARY
105+
echo "" >> $GITHUB_STEP_SUMMARY
106+
echo "Downloading OpenShift binaries and content..." >> $GITHUB_STEP_SUMMARY
75107
76-
echo "✅ Cleanup complete" >> $GITHUB_STEP_SUMMARY
108+
make deploy-cluster-prepare
77109
78-
- name: Setup infrastructure
79-
uses: ./.github/actions/setup-infrastructure
110+
echo "✅ Phase 1 complete" >> $GITHUB_STEP_SUMMARY
80111
81-
- name: Deploy OpenShift cluster
82-
id: deploy_cluster
112+
- name: Phase 2 - Mirror registry setup
113+
id: deploy_mirror
83114
run: |
84-
echo "## Deploying OpenShift Cluster (Disconnected Mode)" >> $GITHUB_STEP_SUMMARY
115+
echo "## Phase 2: Mirror Registry" >> $GITHUB_STEP_SUMMARY
85116
echo "" >> $GITHUB_STEP_SUMMARY
86-
echo "Starting full air-gapped deployment with mirror registry..." >> $GITHUB_STEP_SUMMARY
87-
echo "Expected duration: ~120 minutes" >> $GITHUB_STEP_SUMMARY
117+
echo "Setting up local mirror registry (disconnected mode)..." >> $GITHUB_STEP_SUMMARY
118+
119+
make deploy-cluster-mirror
120+
121+
echo "✅ Phase 2 complete" >> $GITHUB_STEP_SUMMARY
122+
123+
- name: Phase 3 - Deploy OpenShift cluster
124+
id: deploy_install
125+
run: |
126+
echo "## Phase 3: Deploy Cluster" >> $GITHUB_STEP_SUMMARY
88127
echo "" >> $GITHUB_STEP_SUMMARY
89-
echo "Phases:" >> $GITHUB_STEP_SUMMARY
90-
echo "1. Prepare - Download binaries (~5 min)" >> $GITHUB_STEP_SUMMARY
91-
echo "2. Mirror - Set up Quay and mirror images (~20 min, ~130GB)" >> $GITHUB_STEP_SUMMARY
92-
echo "3. Deploy - Install OpenShift cluster (~50 min)" >> $GITHUB_STEP_SUMMARY
93-
echo "4. Post-install - Configure cluster (~5 min)" >> $GITHUB_STEP_SUMMARY
94-
echo "5. Operators - Install operators (~20 min)" >> $GITHUB_STEP_SUMMARY
95-
echo "6. Day-2 - Advanced features (~10 min)" >> $GITHUB_STEP_SUMMARY
96-
echo "7. Discovery - Hardware discovery setup (~10 min)" >> $GITHUB_STEP_SUMMARY
128+
echo "Deploying OpenShift cluster (mode: disconnected)..." >> $GITHUB_STEP_SUMMARY
97129
98-
make deploy-cluster
130+
make deploy-cluster-install
131+
132+
echo "✅ Phase 3 complete - Cluster deployed" >> $GITHUB_STEP_SUMMARY
133+
134+
- name: Phase 4 - Post-install configuration
135+
id: deploy_post_install
136+
run: |
137+
echo "## Phase 4: Post-Install Configuration" >> $GITHUB_STEP_SUMMARY
138+
echo "" >> $GITHUB_STEP_SUMMARY
139+
echo "Configuring cluster (secrets, certificates, API health)..." >> $GITHUB_STEP_SUMMARY
99140
100-
echo "✅ Cluster deployment complete" >> $GITHUB_STEP_SUMMARY
141+
make deploy-cluster-post-install
142+
143+
echo "✅ Phase 4 complete" >> $GITHUB_STEP_SUMMARY
144+
145+
- name: Phase 5 - Install operators
146+
id: deploy_operators
147+
run: |
148+
echo "## Phase 5: Operators" >> $GITHUB_STEP_SUMMARY
149+
echo "" >> $GITHUB_STEP_SUMMARY
150+
echo "Installing and configuring operators..." >> $GITHUB_STEP_SUMMARY
151+
152+
make deploy-cluster-operators
153+
154+
echo "✅ Phase 5 complete" >> $GITHUB_STEP_SUMMARY
155+
156+
- name: Phase 6 - Day-2 operations
157+
id: deploy_day2
158+
run: |
159+
echo "## Phase 6: Day-2 Operations" >> $GITHUB_STEP_SUMMARY
160+
echo "" >> $GITHUB_STEP_SUMMARY
161+
echo "Configuring advanced features and policies..." >> $GITHUB_STEP_SUMMARY
162+
163+
make deploy-cluster-day2
164+
165+
echo "✅ Phase 6 complete" >> $GITHUB_STEP_SUMMARY
166+
167+
- name: Phase 7 - Configure hardware discovery
168+
id: deploy_discovery
169+
run: |
170+
echo "## Phase 7: Hardware Discovery" >> $GITHUB_STEP_SUMMARY
171+
echo "" >> $GITHUB_STEP_SUMMARY
172+
echo "Configuring hardware discovery infrastructure..." >> $GITHUB_STEP_SUMMARY
173+
174+
make deploy-cluster-discovery
175+
176+
echo "✅ Phase 7 complete - Full deployment complete" >> $GITHUB_STEP_SUMMARY
101177
102178
- name: Verify cluster deployment
103179
if: success()
@@ -153,7 +229,7 @@ jobs:
153229
echo "- **Status**: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY
154230
155231
- name: Notify Slack
156-
if: always()
232+
if: always() && (github.event_name == 'schedule' || inputs.send-slack-notification == true)
157233
uses: ./.github/actions/notify-slack
158234
with:
159235
status: ${{ job.status }}

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ Check [Topo.png](docs/Topo.png) for expected hardware setup and [ArchMap.png](do
1515
```bash
1616
cp config/global.example.yaml config/global.yaml
1717
cp config/certificates.example.yaml config/certificates.yaml
18+
cp config/cloud_infra.example.yaml config/cloud_infra.yaml
1819
vim config/global.yaml # Fill in your cluster, network, and hardware settings
1920
vim config/certificates.yaml # Fill in your SSL certificates
21+
vim config/cloud_infra.yaml # Fill in your discovery hosts (or leave discovery_hosts: [])
2022
```
2123

2224
2. Run the bootstrap script:
@@ -120,6 +122,8 @@ Comprehensive documentation is available in the `docs/` folder:
120122
- **[Deployment Guide](docs/DEPLOYMENT_GUIDE.md)**: Complete guide on what gets deployed, prerequisites, and deployment workflow
121123
- **[Configuration Reference](docs/CONFIGURATION_REFERENCE.md)**: Detailed explanation of all configuration variables with examples
122124

125+
> **Note on Host Discovery Management:** While Phase 7 allows you to configure hardware discovery through the Enclave configuration as a one-time convenience, **Red Hat Advanced Cluster Management (ACM) is the recommended approach for managing bare metal host discovery and lifecycle operations** in production. For adding, removing, or modifying nodes after initial deployment, use ACM. See the [Deployment Guide](docs/DEPLOYMENT_GUIDE.md#discovering-new-nodes) for details.
126+
123127
## Local Development & Testing
124128

125129
### Prerequisites
@@ -345,6 +349,7 @@ ssh cloud-user@<landing-zone-ip>
345349
ls -la /home/cloud-user/enclave
346350
cat /home/cloud-user/enclave/config/global.yaml
347351
cat /home/cloud-user/enclave/config/certificates.yaml
352+
cat /home/cloud-user/enclave/config/cloud_infra.yaml
348353
```
349354

350355
#### Test Only Cluster Deployment

0 commit comments

Comments
 (0)