Skip to content

Commit d55b2e7

Browse files
committed
Use Ansible Terraform module directly
1 parent 2cb68eb commit d55b2e7

File tree

4 files changed

+64
-43
lines changed

4 files changed

+64
-43
lines changed

roles/image_build_infra/defaults/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22

33
image_build_terraform_project_path: "{{ playbook_dir }}/terraform-caas-image-build"
4-
image_build_cluster_id: "caas-image-build"
4+
image_build_cluster_name: "caas-image-build"
55

66
# Regex to capture existing cloud image names to use as the
77
# OpenHPC Slurm base-image

roles/image_build_infra/tasks/main.yml

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,45 @@
11
---
2-
- name: Get path to the image-buid Terraform templates directory
3-
set_fact:
4-
image_build_terraform_template_dir: "{{ role_path }}/templates"
5-
6-
- name: Run cluster_infra role with image-build terraform template
2+
- name: Install Terraform binary
73
include_role:
8-
name: cluster_infra
9-
public: true
10-
vars:
11-
cluster_id: "{{ image_build_cluster_id }}"
12-
cluster_name: "{{ image_build_cluster_id }}"
13-
cluster_terraform_template_dir: "{{ image_build_terraform_template_dir }}"
14-
terraform_project_path: "{{ image_build_terraform_project_path }}"
4+
name: stackhpc.terraform.install
5+
6+
- name: Make Terraform project directory
7+
file:
8+
path: "{{ image_build_terraform_project_path }}"
9+
state: directory
10+
11+
- name: Write backend configuration
12+
copy:
13+
content: |
14+
terraform {
15+
backend "{{ terraform_backend_type }}" { }
16+
}
17+
dest: "{{ image_build_terraform_project_path }}/backend.tf"
18+
19+
- name: Template Terraform files into project directory
20+
template:
21+
src: "{{ item }}.j2"
22+
dest: "{{ image_build_terraform_project_path }}/{{ item }}"
23+
loop:
24+
- outputs.tf
25+
- providers.tf
26+
- resources.tf
27+
28+
- name: Provision infrastructure using Terraform
29+
terraform:
30+
binary_path: "{{ terraform_binary_path or omit }}"
31+
project_path: "{{ image_build_terraform_project_path }}"
32+
state: "{{ terraform_state }}"
33+
backend_config: "{{ terraform_backend_config }}"
34+
force_init: yes
35+
init_reconfigure: yes
36+
variables: "{{ image_build_terraform_variables | default(omit) }}"
37+
register: image_build_terraform_provision
1538

1639
- name: Set image build infrastructure facts
1740
set_fact:
18-
image_build_network_id: "{{ terraform_provision.outputs.network_id.value }}"
19-
image_build_floating_ip_network: "{{ terraform_provision.outputs.floating_ip_network_id.value }}"
20-
image_build_source_image_id: "{{ terraform_provision.outputs.source_image_name.value.ids | first }}"
21-
image_build_security_group_id: "{{ terraform_provision.outputs.security_group_id.value }}"
41+
image_build_network_id: "{{ image_build_terraform_provision.outputs.network_id.value }}"
42+
image_build_floating_ip_network: "{{ image_build_terraform_provision.outputs.floating_ip_network_id.value }}"
43+
image_build_source_image_id: "{{ image_build_terraform_provision.outputs.source_image_name.value }}"
44+
image_build_security_group_id: "{{ image_build_terraform_provision.outputs.security_group_id.value }}"
2245
when: cluster_state is not defined or (cluster_state is defined and cluster_state != "absent")
23-

roles/image_build_infra/templates/outputs.tf.j2

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ output "network_id" {
55

66
output "source_image_name" {
77
description = "The id of the image used to build the cluster nodes"
8-
value = data.openstack_images_image_ids_v2.image_build_source_image
8+
{% if image_build_source_image_id is defined %}
9+
value = "{{ image_build_source_image_id }}"
10+
{% else %}
11+
value = data.openstack_images_image_ids_v2.image_build_source_image.ids[0]
12+
{% endif %}
913
}
1014

1115
output "floating_ip_network_id" {
@@ -15,22 +19,9 @@ output "floating_ip_network_id" {
1519

1620
output "security_group_id" {
1721
description = "Security group ID to associate with the builder instance"
22+
{% if image_build_security_group_id is defined %}
23+
value = "{{ image_build_security_group_id }}"
24+
{% else %}
1825
value = openstack_networking_secgroup_v2.caas_image_build_secgroup.id
19-
}
20-
21-
# Empty values to keep ansible-collection-terraform happy
22-
output "cluster_nodes" {
23-
value = []
24-
}
25-
26-
output "cluster_gateway_ip" {
27-
value = ""
28-
}
29-
30-
output "cluster_ssh_private_key" {
31-
# No need to create a keypair in Terraform, because we use
32-
# ephemeral keys generated by Packer, or a specific user
33-
# supplied one from image_build_ssh_keypair_name and
34-
# image_build_ssh_private_key_file.
35-
value = ""
26+
{% endif %}
3627
}

roles/image_build_infra/templates/resources.tf.j2

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ data "openstack_networking_network_v2" "caas_image_build_external_network" {
88
external = true
99
}
1010

11+
{% if image_build_network_id is not defined %}
1112
{% if image_build_network_name is not defined %}
1213
# Create a network
1314
resource "openstack_networking_network_v2" "caas_image_build_network" {
14-
name = "{{ image_build_cluster_id }}"
15+
name = "{{ image_build_cluster_name }}"
1516
admin_state_up = "true"
1617
}
1718

1819
resource "openstack_networking_subnet_v2" "caas_image_build_subnet" {
19-
name = "{{ image_build_cluster_id }}"
20+
name = "{{ image_build_cluster_name }}"
2021
network_id = "${openstack_networking_network_v2.caas_image_build_network.id}"
2122
cidr = "192.168.244.0/24"
2223
{% if image_build_nameservers is defined %}
@@ -30,7 +31,7 @@ resource "openstack_networking_subnet_v2" "caas_image_build_subnet" {
3031
}
3132

3233
resource "openstack_networking_router_v2" "caas_image_build_router" {
33-
name = "{{ image_build_cluster_id }}"
34+
name = "{{ image_build_cluster_name }}"
3435
admin_state_up = true
3536
external_network_id = "${data.openstack_networking_network_v2.caas_image_build_external_network.id}"
3637
}
@@ -40,17 +41,21 @@ resource "openstack_networking_router_interface_v2" "caas_image_build_router_int
4041
subnet_id = "${openstack_networking_subnet_v2.caas_image_build_subnet.id}"
4142
}
4243
{% endif %}
44+
{% endif %}
4345

4446
# Get existing network resource data by name, from either the created
4547
# network or the network name if supplied
4648
data "openstack_networking_network_v2" "caas_image_build_network" {
47-
{% if image_build_network_name is not defined %}
48-
network_id = "${openstack_networking_network_v2.caas_image_build_network.id}"
49-
{% else %}
49+
{% if image_build_network_id is defined %}
50+
network_id = "{{ image_build_network_id }}"
51+
{% elif image_build_network_name is defined %}
5052
name = "{{ image_build_network_name }}"
53+
{% else %}
54+
network_id = "${openstack_networking_network_v2.caas_image_build_network.id}"
5155
{% endif %}
5256
}
5357

58+
{% if image_build_source_image_id is not defined %}
5459
######
5560
###### Image build base image
5661
######
@@ -59,14 +64,16 @@ data "openstack_images_image_ids_v2" "image_build_source_image" {
5964
name_regex = "{{ image_build_existing_image_regex }}"
6065
sort = "{{ image_build_existing_image_sort_attributes }}"
6166
}
67+
{% endif %}
6268

69+
{% if image_build_security_group_id is not defined %}
6370
######
6471
###### Image build security groups
6572
######
6673

6774
# Security group to hold specific rules for the image build instance
6875
resource "openstack_networking_secgroup_v2" "caas_image_build_secgroup" {
69-
name = "{{ image_build_cluster_id }}"
76+
name = "{{ image_build_cluster_name }}"
7077
description = "Specific rules for caas image build"
7178
delete_default_rules = true # Fully manage with terraform
7279
}
@@ -87,3 +94,4 @@ resource "openstack_networking_secgroup_rule_v2" "caas_image_build_secgroup_ingr
8794
port_range_max = 22
8895
security_group_id = "${openstack_networking_secgroup_v2.caas_image_build_secgroup.id}"
8996
}
97+
{% endif %}

0 commit comments

Comments
 (0)