summaryrefslogtreecommitdiff
path: root/spin_up_bare_vm.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'spin_up_bare_vm.yaml')
-rwxr-xr-xspin_up_bare_vm.yaml169
1 files changed, 169 insertions, 0 deletions
diff --git a/spin_up_bare_vm.yaml b/spin_up_bare_vm.yaml
new file mode 100755
index 0000000..5ece10d
--- /dev/null
+++ b/spin_up_bare_vm.yaml
@@ -0,0 +1,169 @@
+#!/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