Newer
Older
---
- name: SET VARIABLES WHEN PROVISIONING
hosts: localhost
tags: always
gather_facts: false
run_once: true
tasks:
- name: not provisioning
set_fact:
provisioning: false
delegate_facts: true
- name: enable provisioning
set_fact:
provisioning: true
delegate_facts: true
when: ('force-delete' not in ansible_run_tags)
- name: OVH CLOUD PROVISIONING
hosts: localhost
connection: local
tags: always
vars:
ovh_prefix: cloud
tasks:
- name: list all server in cloud project
os_server_info:
availability_zone: nova
server: "{{ ovh_prefix }}-*"
filters:
vm_state: active
register: result_json
- name: register variable for futures uses
set_fact:
current_servers: "{{ result_json.openstack_servers }}"
- name: add existent hosts to inventory
add_host:
name: "{{ item.metadata.hostname }}"
ansible_host: "{{ item.accessIPv4 }}"
ansible_user: debian
ansible_become: true
loop: "{{ current_servers }}"
- name: launch a compute instance for non existant hosts
os_server:
state: present
name: "{{ ovh_prefix }}-{{ item }}"
availability_zone: nova
image: "{{ hostvars[item].image | default('a75cc6c8-f697-48a6-a820-37e68621b07a') }}"
flavor: "{{ hostvars[item].flavor | default('b2-7-flex') }}"
security_groups: default
key_name: gitlab
meta:
hostname: "{{ item }}"
nics:
- net-name: Ext-Net
- net-name: backend
when:
- hostvars[item].ansible_host is defined
- hostvars[item].ansible_host == "ovhcloud"
- hostvars.localhost.provisioning == true
- item not in current_servers
register: openstack_servers
loop: "{{ query('inventory_hostnames', 'all:!localhost') }}"
- name: add created hosts to inventory
add_host:
name: "{{ item.metadata.hostname }}"
ansible_host: "{{ item.accessIPv4 }}"
ansible_user: debian
ansible_become: true
loop: "{{ openstack_servers | json_query('results[*].openstack') }}"
...