1
0
mirror of https://github.com/openshift/installer.git synced 2026-02-05 06:46:36 +01:00
Files
installer/upi/openstack/compute-nodes.yaml
Roman Dobosz aae81ab501 OCPBUGS-33973: Openstack UPI - Reintroduce unique resource names.
We experienced issues caused by network resources created with the same
name, which makes ansible playbooks to behave differently.

Due to fact, that there is not yet OpenShift infraID accessible on the
stage of creating network resources, there is a need to create
deployment unique identifier in some other way. This patch implements
generating such identifier independent from OpenShift deployment id.

Co-authored-by: Maysa De Macedo Souza <maysa.macedo95@gmail.com>
2024-07-09 09:32:52 +02:00

85 lines
2.9 KiB
YAML

# Required Python packages:
#
# ansible
# openstackclient
# openstacksdk
# netaddr
- ansible.builtin.import_playbook: common.yaml
- hosts: all
gather_facts: no
tasks:
- name: 'Create the Compute ports'
openstack.cloud.port:
name: "{{ item.1 }}-{{ item.0 }}"
network: "{{ os_network }}"
security_groups:
- "{{ os_sg_worker }}"
allowed_address_pairs:
- ip_address: "{{ os_ingressVIP }}"
with_indexed_items: "{{ [os_port_worker] * os_compute_nodes_number }}"
register: ports
when: os_subnet6_range is not defined
- name: 'Create the dualstack Compute ports'
openstack.cloud.port:
name: "{{ item.1 }}-{{ item.0 }}"
network: "{{ os_network }}"
security_groups:
- "{{ os_sg_worker }}"
allowed_address_pairs:
- ip_address: "{{ os_ingressVIP }}"
- ip_address: "{{ os_ingressVIP6 }}"
with_indexed_items: "{{ [os_port_worker] * os_compute_nodes_number }}"
register: ports
when: os_subnet6_range is defined
- name: 'Set Compute ports tag'
ansible.builtin.command:
cmd: "openstack port set --tag {{ cluster_id_tag }} {{ item.1 }}-{{ item.0 }}"
with_indexed_items: "{{ [os_port_worker] * os_compute_nodes_number }}"
- name: 'List the Server groups'
ansible.builtin.command:
# os-compute-api-version 2.15 or higher is required for the 'soft-anti-affinity' policy
cmd: "openstack --os-compute-api-version=2.15 server group list -f json -c ID -c Name"
register: server_group_list
- name: 'Parse the Server group ID from existing'
ansible.builtin.set_fact:
server_group_id: "{{ (server_group_list.stdout | from_json | json_query(list_query) | first).ID }}"
vars:
list_query: "[?Name=='{{ os_compute_server_group_name }}']"
when:
- "os_compute_server_group_name|string in server_group_list.stdout"
- name: 'Create the Compute server group'
ansible.builtin.command:
# os-compute-api-version 2.15 or higher is required for the 'soft-anti-affinity' policy
cmd: "openstack --os-compute-api-version=2.15 server group create -f json -c id --policy=soft-anti-affinity {{ os_compute_server_group_name }}"
register: server_group_created
when:
- server_group_id is not defined
- name: 'Parse the Server group ID from creation'
ansible.builtin.set_fact:
server_group_id: "{{ (server_group_created.stdout | from_json).id }}"
when:
- server_group_id is not defined
- name: 'Create the Compute servers'
openstack.cloud.server:
name: "{{ item.1 }}-{{ item.0 }}"
image: "{{ os_image_rhcos }}"
flavor: "{{ os_flavor_worker }}"
auto_ip: no
userdata: "{{ lookup('file', 'worker.ign') | string }}"
nics:
- port-name: "{{ os_port_worker }}-{{ item.0 }}"
scheduler_hints:
group: "{{ server_group_id }}"
meta: "{{ cluster_id_tag }}"
with_indexed_items: "{{ [os_compute_server_name] * os_compute_nodes_number }}"