Skip to content

Commit 2e3746b

Browse files
committed
Make image-build infra management optional
1 parent f6f9939 commit 2e3746b

File tree

11 files changed

+112
-68
lines changed

11 files changed

+112
-68
lines changed

build-image.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.
File renamed without changes.

image-build/image-build.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
- name: Build image
3+
hosts: openstack
4+
tasks:
5+
- name: Create image build infra
6+
include_role:
7+
name: image_build_infra
8+
tasks_from: create.yml
9+
when:
10+
- image_build_manage_infra is defined
11+
- image_build_manage_infra
12+
13+
- name: Build fat image
14+
include_role:
15+
name: image_build
16+
17+
- name: Destroy image build infra
18+
include_role:
19+
name: image_build_infra
20+
tasks_from: destroy.yml
21+
when:
22+
- image_build_manage_infra is defined
23+
- image_build_manage_infra
24+
25+
- name: Set cluster_image fact
26+
set_fact:
27+
cluster_image: "{{ image_build_data.artifact_id }}"
28+
29+
- name: Print cluster_image UUID
30+
debug:
31+
msg: "{{ cluster_image }}"

roles/image_build/tasks/main.yml

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,8 @@
11
---
2-
- debug:
3-
msg: |
4-
terraform_backend_type: {{ terraform_backend_type }}
5-
terraform_state: {{ terraform_state }}
62

73
- name: Run prechecks
84
include_tasks: prechecks.yml
95

10-
- name: Install Terraform binary
11-
include_role:
12-
name: stackhpc.terraform.install
13-
14-
- name: Make Terraform project directory
15-
file:
16-
path: "{{ image_build_terraform_project_path }}"
17-
state: directory
18-
19-
- name: Write backend configuration
20-
copy:
21-
content: |
22-
terraform {
23-
backend "{{ terraform_backend_type }}" { }
24-
}
25-
dest: "{{ image_build_terraform_project_path }}/backend.tf"
26-
27-
- name: Template Terraform files into project directory
28-
template:
29-
src: "{{ item }}.j2"
30-
dest: "{{ image_build_terraform_project_path }}/{{ item }}"
31-
loop:
32-
- outputs.tf
33-
- providers.tf
34-
- resources.tf
35-
36-
- name: Provision infrastructure
37-
include_role:
38-
name: stackhpc.terraform.infra
39-
vars:
40-
terraform_project_path: "{{ image_build_terraform_project_path }}"
41-
42-
- name: Set image build infrastructure facts
43-
set_fact:
44-
image_build_network_id: "{{ terraform_provision.outputs.network_id.value }}"
45-
image_build_floating_ip_network: "{{ terraform_provision.outputs.floating_ip_network_id.value }}"
46-
image_build_ssh_keypair_name: "{{ terraform_provision.outputs.ssh_keypair_name.value }}"
47-
image_build_ssh_private_key_file: "{{ cluster_ssh_private_key_file }}"
48-
image_build_source_image_id: "{{ terraform_provision.outputs.source_image_name.value.ids | first }}"
49-
image_build_security_group_id: "{{ terraform_provision.outputs.security_group_id.value }}"
50-
516
- name: Make Packer vars file
527
template:
538
src: builder.pkrvars.hcl.j2
@@ -118,10 +73,3 @@
11873
set_fact:
11974
image_build_data: "{{ packer_manifest.builds | selectattr('packer_run_uuid', 'eq', packer_manifest.last_run_uuid) | first }}"
12075

121-
- name: Destroy infrastructure
122-
include_role:
123-
name: stackhpc.terraform.infra
124-
vars:
125-
terraform_project_path: "{{ image_build_terraform_project_path }}"
126-
cluster_state: absent
127-

roles/image_build/tasks/prechecks.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
---
22

3+
- name: Check required vars are defined
4+
assert:
5+
that:
6+
- "{{ item }} is defined"
7+
fail_msg: "{{ item }} is not defined"
8+
loop:
9+
- image_build_network_id
10+
- image_build_floating_ip_network
11+
- image_build_ssh_keypair_name
12+
- image_build_ssh_private_key_file
13+
- image_build_source_image_id
14+
- image_build_security_group_id
15+
316
- name: Ensure builder access mode
417
fail:
518
msg: >-
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
image_build_terraform_project_path: "{{ playbook_dir }}/terraform-image-build"
3+
image_build_cluster_id: "image-build"
4+
5+
# Regex to capture existing cloud image names to use as the
6+
# OpenHPC Slurm base-image
7+
image_build_existing_image_regex: "^Rocky-8-GenericCloud-Base-8.7-.*"
8+
# Attributes to sort the list of existing base images returned by
9+
# image_build_existing_image_regex. See
10+
# https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/data-sources/images_image_ids_v2#sort
11+
image_build_existing_image_sort_attributes: "name,updated_at"
12+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
- debug:
3+
msg: |
4+
terraform_backend_type: {{ terraform_backend_type }}
5+
terraform_state: {{ terraform_state }}
6+
7+
- name: Install Terraform binary
8+
include_role:
9+
name: stackhpc.terraform.install
10+
11+
- name: Make Terraform project directory
12+
file:
13+
path: "{{ image_build_terraform_project_path }}"
14+
state: directory
15+
16+
- name: Write backend configuration
17+
copy:
18+
content: |
19+
terraform {
20+
backend "{{ terraform_backend_type }}" { }
21+
}
22+
dest: "{{ image_build_terraform_project_path }}/backend.tf"
23+
24+
- name: Template Terraform files into project directory
25+
template:
26+
src: "{{ item }}.j2"
27+
dest: "{{ image_build_terraform_project_path }}/{{ item }}"
28+
loop:
29+
- outputs.tf
30+
- providers.tf
31+
- resources.tf
32+
33+
- name: Provision infrastructure
34+
include_role:
35+
name: stackhpc.terraform.infra
36+
vars:
37+
terraform_project_path: "{{ image_build_terraform_project_path }}"
38+
39+
- name: Set image build infrastructure facts
40+
set_fact:
41+
image_build_network_id: "{{ terraform_provision.outputs.network_id.value }}"
42+
image_build_floating_ip_network: "{{ terraform_provision.outputs.floating_ip_network_id.value }}"
43+
image_build_ssh_keypair_name: "{{ terraform_provision.outputs.ssh_keypair_name.value }}"
44+
image_build_ssh_private_key_file: "{{ cluster_ssh_private_key_file }}"
45+
image_build_source_image_id: "{{ terraform_provision.outputs.source_image_name.value.ids | first }}"
46+
image_build_security_group_id: "{{ terraform_provision.outputs.security_group_id.value }}"
47+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
3+
- name: Destroy infrastructure
4+
include_role:
5+
name: stackhpc.terraform.infra
6+
vars:
7+
terraform_project_path: "{{ image_build_terraform_project_path }}"
8+
cluster_state: absent
9+

0 commit comments

Comments
 (0)