openstack-ansible-ops/multi-node-aio/playbooks/openstack-service-setup.yml
James Denton ff7cbf5548 Update MNAIO to use Ansible Collections
This patch updates various playbooks within the MNAIO to use ansible
collections, which is required for the latest Ansible versions.

Change-Id: Ia7694e6b182dc8898b56730537cc99759a722b20
2022-07-23 21:01:25 +00:00

132 lines
4.0 KiB
YAML

---
#
# Playbook to populate a newly deployed OpenStack cloud with some flavors, images, etc.
#
# Runs against the Utility container on infra1, relying on the clouds.yaml file
# left there by the OpenStack-Ansible playbooks to specify the API endpoint and
# auth parameters to use.
#
- name: OpenStack service setup
hosts: utility_all[0]
user: root
environment: "{{ deployment_environment_variables | default({}) }}"
# All the data is found in this file:
vars_files:
- vars/openstack-service-config.yml
tasks:
# - name: Ensure python-shade library is present to run ansible os_xxx modules
# apt:
# name: python-shade
# state: present
# tags:
# - always
- name: Create flavors of nova VMs
openstack.cloud.os_nova_flavor:
endpoint_type: internal
cloud: default
state: present
name: "{{ item.name }}"
ram: "{{ item.ram }}"
vcpus: "{{ item.vcpus }}"
disk: "{{ item.disk }}"
swap: "{{ item.swap }}"
ephemeral: "{{ item.ephemeral }}"
with_items: "{{ vm_flavors }}"
tags:
- create_flavors
- name: Create networks
openstack.cloud.os_network:
endpoint_type: internal
cloud: default
state: present
name: "{{ item.name }}"
shared: "{{ item.shared }}"
external: "{{ item.external }}"
provider_network_type: "{{ item.network_type }}"
provider_physical_network: "{{ item.physical_network | default ('') }}"
with_items: "{{ networks }}"
when: not (osa_enable_networking_ovn | bool)
tags:
- create_networks
- name: Create networks (OVN)
openstack.cloud.os_network:
endpoint_type: internal
cloud: default
state: present
name: "{{ item.name }}"
shared: "{{ item.shared }}"
external: "{{ item.external }}"
provider_network_type: "{{ item.network_type }}"
provider_physical_network: "{{ item.physical_network | default ('') }}"
with_items: "{{ networks_ovn }}"
when: osa_enable_networking_ovn | default(false) | bool
- name: Create subnets on networks
openstack.cloud.os_subnet:
endpoint_type: internal
cloud: default
state: present
name: "{{ item.name }}"
network_name: "{{ item.network_name }}"
ip_version: "{{ item.ip_version }}"
cidr: "{{ item.cidr }}"
gateway_ip: "{{ item.gateway_ip }}"
enable_dhcp: "{{ item.enable_dhcp }}"
allocation_pool_start: "{{ item.allocation_pool_start }}"
allocation_pool_end: "{{ item.allocation_pool_end }}"
dns_nameservers: "{{ item.dns_nameservers | default([]) }}"
with_items: "{{ subnets }}"
tags:
- create_networks
- name: Create a router on both public and private networks
openstack.cloud.os_router:
endpoint_type: internal
cloud: default
state: present
name: "{{ router_name }}"
network: "{{ provider_net_name }}"
interfaces:
- "{{ private_subnet_name }}"
ignore_errors: yes # will report error if this router already exists
register: router_details
tags:
- create_networks
- name: Get list of security groups
# Must use shell here because Ansible does not have os_security_group_facts module
shell: "source openrc ; openstack security group list -f yaml | awk '/ID/ {print $2}'"
args:
executable: /bin/bash
register: sec_groups
tags:
- create_networks
- name: Setup rules on all security groups
openstack.cloud.os_security_group_rule:
endpoint_type: internal
cloud: default
security_group: "{{ item[1] }}"
protocol: "{{ item[0].protocol }}"
direction: "{{ item[0].direction }}"
port_range_min: "{{ item[0].port_min | default(-1) }}"
port_range_max: "{{ item[0].port_max | default(-1) }}"
with_nested:
- "{{ security_group_rules }}"
- "{{ sec_groups.stdout_lines }}"
tags:
- create_networks
# Install some Linux system images
- include: "{{ playbook_dir }}/openstack-image-setup.yml"
with_items: "{{ images }}"
tags:
- create_images