Skip to content

Commit 8f88994

Browse files
authored
Merge pull request #69 from validatedpatterns/update-v1-again
Update v1 again
2 parents cb8fd49 + 53f2520 commit 8f88994

File tree

5 files changed

+143
-0
lines changed

5 files changed

+143
-0
lines changed

playbooks/create_machineset.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
- name: Create MachineSet Based on Existing MachineSet(s)
3+
hosts: localhost
4+
connection: local
5+
gather_facts: false
6+
roles:
7+
- role: create_machineset
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
- name: Set Name and Region
3+
ansible.builtin.set_fact:
4+
infrastructure_name: "{{ cluster_info.resources[0].status.infrastructureName }}"
5+
infrastructure_region: "{{ cluster_info.resources[0].status.platformStatus.aws.region }}"
6+
7+
- name: Query Existing MachineSet(s)
8+
kubernetes.core.k8s_info:
9+
api_version: machine.openshift.io/v1beta1
10+
kind: MachineSet
11+
namespace: openshift-machine-api
12+
register: cluster_machinesets
13+
14+
- name: Extract Target MachineSet(s)
15+
ansible.builtin.set_fact:
16+
target_machineset_resources: "{{ cluster_machinesets.resources[0 : max_machineset_count | int] }}"
17+
18+
- name: Ensure Two Machine Minimum
19+
ansible.builtin.set_fact:
20+
machineset_replicas: 2
21+
when: ensure_two_machine_minimum | bool and target_machineset_resources | length == 1
22+
23+
- name: Apply AWS Template
24+
ansible.builtin.template:
25+
src: templates/aws_machineset.j2
26+
dest: "/tmp/machineset_{{ idx }}.yaml"
27+
mode: "0644"
28+
loop: "{{ target_machineset_resources }}"
29+
loop_control:
30+
index_var: idx
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
- name: Query Cluster Infrastructure
3+
kubernetes.core.k8s_info:
4+
api_version: config.openshift.io/v1
5+
kind: Infrastructure
6+
name: cluster
7+
register: cluster_info
8+
9+
- name: Get Cluster Platform
10+
ansible.builtin.set_fact:
11+
cluster_platform: "{{ cluster_info.resources[0].status.platform | upper }}"
12+
13+
- name: Create AWS MachineSet Manifests
14+
when: cluster_platform == "AWS"
15+
ansible.builtin.include_tasks: aws_create_machineset_manifests.yml
16+
17+
- name: Print Manifests on Dry Run
18+
when: dry_run
19+
ansible.builtin.debug:
20+
var: lookup("ansible.builtin.file", "/tmp/machineset_{{ idx }}.yaml")
21+
loop: "{{ target_machineset_resources }}"
22+
loop_control:
23+
index_var: idx
24+
25+
- name: Apply MachineSet Manifest
26+
when: not dry_run
27+
kubernetes.core.k8s:
28+
state: present
29+
src: "/tmp/machineset_{{ idx }}.yaml"
30+
loop: "{{ target_machineset_resources }}"
31+
loop_control:
32+
index_var: idx
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
apiVersion: machine.openshift.io/v1beta1
3+
kind: MachineSet
4+
metadata:
5+
labels:
6+
machine.openshift.io/cluster-api-cluster: "{{ infrastructure_name }}"
7+
{% if machineset_labels %}
8+
{{ machineset_labels | from_yaml | to_nice_yaml(indent=2) | indent(4, first=True) }}{% endif %}
9+
name: "{{ infrastructure_name }}-{{ machineset_name }}-{{ item.spec.template.spec.providerSpec.value.placement.availabilityZone }}"
10+
namespace: openshift-machine-api
11+
spec:
12+
replicas: {{ machineset_replicas | int }}
13+
selector:
14+
matchLabels:
15+
machine.openshift.io/cluster-api-cluster: "{{ infrastructure_name }}"
16+
machine.openshift.io/cluster-api-machineset: "{{ infrastructure_name }}-{{ machineset_name }}-{{ item.spec.template.spec.providerSpec.value.placement.availabilityZone }}"
17+
template:
18+
metadata:
19+
labels:
20+
machine.openshift.io/cluster-api-cluster: "{{ infrastructure_name }}"
21+
machine.openshift.io/cluster-api-machine-role: "{{ machineset_machine_role }}"
22+
machine.openshift.io/cluster-api-machine-type: "{{ machineset_machine_type }}"
23+
machine.openshift.io/cluster-api-machineset: "{{ infrastructure_name }}-{{ machineset_name }}-{{ item.spec.template.spec.providerSpec.value.placement.availabilityZone }}"
24+
spec:
25+
{% if machineset_taints %}
26+
taints:
27+
{{ machineset_taints | from_yaml | to_nice_yaml(indent=2) | indent(8, first=True) }}{% endif %}
28+
metadata:
29+
labels:
30+
{% if machineset_node_labels %}
31+
{{ machineset_node_labels | from_yaml | to_nice_yaml(indent=2) | indent(10, first=True) }}{% endif %}
32+
providerSpec:
33+
value:
34+
ami:
35+
id: "{{ item.spec.template.spec.providerSpec.value.ami.id }}"
36+
apiVersion: {{ machineset_api_version }}
37+
blockDevices: {{ item.spec.template.spec.providerSpec.value.blockDevices }}
38+
credentialsSecret:
39+
name: aws-cloud-credentials
40+
deviceIndex: 0
41+
iamInstanceProfile:
42+
id: "{{ infrastructure_name }}-worker-profile"
43+
instanceType: "{{ machineset_instance_type }}"
44+
kind: AWSMachineProviderConfig
45+
placement:
46+
availabilityZone: "{{ item.spec.template.spec.providerSpec.value.placement.availabilityZone }}"
47+
region: "{{ infrastructure_region }}"
48+
securityGroups: {{ item.spec.template.spec.providerSpec.value.securityGroups }}
49+
subnet:
50+
filters:
51+
- name: tag:Name
52+
values:
53+
- "{{ item.spec.template.spec.providerSpec.value.subnet.filters[0]['values'][0] }}"
54+
tags: {{ item.spec.template.spec.providerSpec.value.tags }}
55+
userDataSecret:
56+
name: "{{ machineset_user_data_secret }}"
57+
namespace: "{{ machineset_user_data_namespace }}"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
dry_run: false
2+
ensure_two_machine_minimum: true
3+
kubeconfig: "{{ lookup('env', 'KUBECONFIG') }}"
4+
machineset_api_version: awsproviderconfig.openshift.io/v1beta1
5+
machineset_instance_type: m5.metal
6+
machineset_labels:
7+
edge-gitops-role: kubevirt-worker
8+
machineset_machine_role: worker
9+
machineset_machine_type: worker
10+
machineset_name: metal-worker
11+
machineset_node_labels:
12+
node-role.kubernetes.io/worker: ""
13+
machineset_replicas: 1
14+
machineset_taints: []
15+
machineset_user_data_namespace: openshift-machine-api
16+
machineset_user_data_secret: worker-user-data
17+
max_machineset_count: 2

0 commit comments

Comments
 (0)