#!/usr/bin/env ansible-playbook --- - name: "Spin up Openbook v3 node" hosts: localhost vars: user_domain_name: "{{ lookup('env', 'OS_USER_DOMAIN_NAME') }}" project_domain_name: "{{ lookup('env', 'OS_PROJECT_DOMAIN_NAME') }}" username: "{{ lookup('env', 'OS_USERNAME') }}" password: "{{ lookup('env', 'OS_PASSWORD') }}" project_name: "{{ lookup('env', 'OS_PROJECT_NAME') }}" endpoint: "{{ lookup('env', 'OS_AUTH_URL') }}" region: "{{ lookup('env', 'OS_REGION_NAME') }}" interface: "{{ lookup('env', 'OS_INTERFACE') }}" identity_api_version: "{{ lookup('env', 'OS_IDENTITY_API_VERSION') }}" image_api_version: "{{ lookup('env', 'OS_IMAGE_API_VERSION') }}" dns_servers: "{{ lookup('env', 'DNS_SERVERS') }}" flavor_name: "{{ lookup('env', 'FLAVOR_NAME') }}" image_name: "{{ lookup('env', 'IMAGE_NAME') }}" keypair_user: "{{ lookup('env', 'KEYPAIR_USER') }}" pubkey_path: "{{ lookup('env', 'PUBKEY_PATH') }}" router_name: "{{ lookup('env', 'ROUTER_NAME') }}" private_network_name: "{{ lookup('env', 'PRIVATE_NETWORK_NAME') }}" private_network_cidr: "{{ lookup('env', 'PRIVATE_NETWORK_CIDR') }}" public_network_cidrs: "{{ lookup('env', 'PUBLIC_NETWORK_CIDRS') }}" ext_network_name: "{{ lookup('env', 'EXT_NETWORK_NAME') }}" instance_name: "openbook-{{ lookup('env', 'OPENBOOK_ENVIRONMENT') }}-v3" tasks: - name: "Ensure image exists" shell: | OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ OS_USERNAME='{{ username }}' \ OS_PASSWORD='{{ password }}' \ OS_PROJECT_NAME='{{ project_name }}' \ OS_AUTH_URL='{{ endpoint }}' \ OS_REGION_NAME='{{ region }}' \ OS_INTERFACE='{{ interface }}' \ OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ {{ playbook_dir }}/files/image.sh \ '{{ image_name }}' - name: "Ensure flavor exists" shell: | OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ OS_USERNAME='{{ username }}' \ OS_PASSWORD='{{ password }}' \ OS_PROJECT_NAME='{{ project_name }}' \ OS_AUTH_URL='{{ endpoint }}' \ OS_REGION_NAME='{{ region }}' \ OS_INTERFACE='{{ interface }}' \ OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ {{ playbook_dir }}/files/flavor.sh \ '{{ flavor_name }}' - name: "Configure security groups" shell: | OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ OS_USERNAME='{{ username }}' \ OS_PASSWORD='{{ password }}' \ OS_PROJECT_NAME='{{ project_name }}' \ OS_AUTH_URL='{{ endpoint }}' \ OS_REGION_NAME='{{ region }}' \ OS_INTERFACE='{{ interface }}' \ OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ {{ playbook_dir }}/files/securitygroup.sh \ '{{ private_network_cidr }}' \ '{{ public_network_cidrs }}' - name: "Configure networks" shell: | OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ OS_USERNAME='{{ username }}' \ OS_PASSWORD='{{ password }}' \ OS_PROJECT_NAME='{{ project_name }}' \ OS_AUTH_URL='{{ endpoint }}' \ OS_REGION_NAME='{{ region }}' \ OS_INTERFACE='{{ interface }}' \ OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ {{ playbook_dir }}/files/network.sh \ '{{ router_name }}' \ '{{ private_network_name }}' \ '{{ private_network_cidr }}' \ '{{ ext_network_name }}' \ '{{ dns_servers }}' register: network_id - name: "Configure SSH keypair" shell: | OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ OS_USERNAME='{{ username }}' \ OS_PASSWORD='{{ password }}' \ OS_PROJECT_NAME='{{ project_name }}' \ OS_AUTH_URL='{{ endpoint }}' \ OS_REGION_NAME='{{ region }}' \ OS_INTERFACE='{{ interface }}' \ OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ {{ playbook_dir }}/files/keypair.sh \ '{{ keypair_user }}_keypair' \ '{{ pubkey_path }}' \ - name: "Customize cloud.cfg" shell: | OS_REGION_NAME='{{ region }}' \ DNS_SERVERS='{{ dns_servers }}' \ {{ playbook_dir }}/files/cloud.sh \ '{{ keypair_user }}' \ '{{ pubkey_path }}' \ '{{ dns_servers }}' - name: "Spin up instance" shell: | OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ OS_USERNAME='{{ username }}' \ OS_PASSWORD='{{ password }}' \ OS_PROJECT_NAME='{{ project_name }}' \ OS_AUTH_URL='{{ endpoint }}' \ OS_REGION_NAME='{{ region }}' \ OS_INTERFACE='{{ interface }}' \ OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ OS_IMAGE_API_VERSION='{{ image_api_version }}' \ {{ playbook_dir }}/files/instance.sh \ '{{ flavor_name }}' \ '{{ image_name }}' \ '{{ network_id.stdout }}' \ '{{ keypair_user }}_keypair' \ '{{ instance_name }}' \ '{{ ext_network_name }}' register: ip_name # - name: "Configure DNS in OpenStack" # shell: | # OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ # OS_IMAGE_API_VERSION='{{ image_api_version }}' \ # OS_USER_DOMAIN_NAME='{{ user_domain_name }}' \ # OS_PROJECT_DOMAIN_NAME='{{ project_domain_name }}' \ # OS_USERNAME='{{ username }}' \ # OS_PASSWORD='{{ password }}' \ # OS_PROJECT_NAME='{{ project_name }}' \ # OS_AUTH_URL='{{ endpoint }}' \ # OS_REGION_NAME='{{ region }}' \ # OS_INTERFACE='{{ interface }}' \ # OS_IDENTITY_API_VERSION='{{ identity_api_version }}' \ # OS_IMAGE_API_VERSION='{{ image_api_version }}' \ # {{ playbook_dir }}/files/dns.sh \ # '{{ ip_name.stdout_lines[1] }}' \ # '{{ ip_name.stdout_lines[0] }}' # register: dns_fqdn