Files
openstack-ansible-ops/multi-node-aio/playbooks/openstack-service-setup.yml
Shannon Mitchell d29019d448 Allow users to skip services to cut down on conflicts
We have received complaints that the openstack-service-setup.yml
playbooks will try to overwrite flavors and images of the same
name that may have different attributes.  This is due to them
requiring some unique configurations that just so happen to
have been using the same name in tests.  The tag additions
will allow them to work around this by skipping the ones
conflicting with existing entries.

Change-Id: I3eef87f522a219d094181fa64933f86142b060ef
Closes-Bug: 1760219
2018-04-03 16:08:20 +00:00

116 lines
3.4 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
- name: Create flavors of nova VMs
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
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 }}"
tags:
- create_networks
- name: Create subnets on networks
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
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
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: ./openstack-image-setup.yml
with_items: "{{ images }}"
tags:
- create_images