Move persistent_cloud_new to just persistent_cloud as the old one isn't used anymore.
This commit is contained in:
parent
7de8f98de5
commit
650b671878
28 changed files with 118 additions and 143 deletions
|
@ -10,7 +10,7 @@
|
||||||
- /srv/web/infra/ansible/vars/fedora-cloud.yml
|
- /srv/web/infra/ansible/vars/fedora-cloud.yml
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
- name: gather facts
|
- name: gather facts
|
||||||
setup:
|
setup:
|
||||||
always_run: True
|
always_run: True
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: cloud basic setup
|
- name: cloud basic setup
|
||||||
hosts: copr-dist-git-stg:copr-dist-git
|
hosts: copr-dist-git-stg:copr-dist-git
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: cloud basic setup
|
- name: cloud basic setup
|
||||||
hosts: copr-front-stg
|
hosts: copr-front-stg
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: cloud basic setup
|
- name: cloud basic setup
|
||||||
hosts: copr-keygen-stg:copr-keygen
|
hosts: copr-keygen-stg:copr-keygen
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: docs-dev
|
hosts: docs-dev
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: jenkins-master
|
hosts: jenkins-master
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: jenkins-slave
|
hosts: jenkins-slave
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: twisted-buildbots
|
hosts: twisted-buildbots
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: artboard.fedorainfracloud.org
|
hosts: artboard.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: communityblog.fedorainfracloud.org
|
hosts: communityblog.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
- include: "{{ tasks }}/growroot_cloud_el7.yml"
|
- include: "{{ tasks }}/growroot_cloud_el7.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: developer.fedorainfracloud.org
|
hosts: developer.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: faitout.fedorainfracloud.org
|
hosts: faitout.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: fas2-dev.fedorainfracloud.org
|
hosts: fas2-dev.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: fas3-dev.fedorainfracloud.org
|
hosts: fas3-dev.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: grafana.cloud.fedoraproject.org
|
hosts: grafana.cloud.fedoraproject.org
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: insim.fedorainfracloud.org
|
hosts: insim.fedorainfracloud.org
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: java-deptools.fedorainfracloud.org
|
hosts: java-deptools.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: lists-dev.fedorainfracloud.org
|
hosts: lists-dev.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: magazine.fedorainfracloud.org
|
hosts: magazine.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: osbs-dev.fedorainfracloud.org
|
hosts: osbs-dev.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: Set up basics for our pdc node.
|
- name: Set up basics for our pdc node.
|
||||||
hosts: pdc.fedorainfracloud.org
|
hosts: pdc.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: shumgrepper-dev.fedorainfracloud.org
|
hosts: shumgrepper-dev.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: taiga.fedorainfracloud.org
|
hosts: taiga.fedorainfracloud.org
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: taigastg.fedorainfracloud.org
|
hosts: taigastg.fedorainfracloud.org
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
- /srv/private/ansible/files/openstack/passwords.yml
|
- /srv/private/ansible/files/openstack/passwords.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- include: "{{ tasks }}/persistent_cloud_new.yml"
|
- include: "{{ tasks }}/persistent_cloud.yml"
|
||||||
|
|
||||||
- name: setup all the things
|
- name: setup all the things
|
||||||
hosts: testdays.fedorainfracloud.org
|
hosts: testdays.fedorainfracloud.org
|
||||||
|
|
|
@ -1,25 +1,104 @@
|
||||||
---
|
# New tasks to spin up instance in https://fedorainfracloud.org
|
||||||
|
|
||||||
- name: check it out
|
- name: check it out
|
||||||
local_action: shell nc -d -z -w 5 {{ inventory_hostname }} 22 >>/dev/null
|
local_action: shell nc -w 5 {{ inventory_hostname }} 22 < /dev/null
|
||||||
register: host_is_up
|
register: host_is_up
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: spin it up
|
- name: clean out old known_hosts (name based entries)
|
||||||
local_action: ec2 keypair={{ keypair }} image={{ image }} type={{ instance_type }} wait=true group={{ security_group }} ec2_access_key={{ persist_access_key }} ec2_secret_key={{ persist_secret_key }} ec2_url={{ os_ec2_url }} region={{ region }}
|
local_action: known_hosts path={{item}} host={{inventory_hostname}} state=absent
|
||||||
register: inst_res
|
ignore_errors: True
|
||||||
|
with_items:
|
||||||
|
- /root/.ssh/known_hosts
|
||||||
|
- /etc/ssh/ssh_known_hosts
|
||||||
when: host_is_up|failed
|
when: host_is_up|failed
|
||||||
|
|
||||||
- name: assign it a special ip
|
- name: clean out old known_hosts (IP based entries)
|
||||||
local_action: shell euca-associate-address --config {{ persist_config }} -i {{ inst_res.instances[0].id }} {{ public_ip }}
|
local_action: known_hosts path={{item}} host={{ lookup('dig', inventory_hostname, wantlist=False) }} state=absent
|
||||||
|
ignore_errors: True
|
||||||
|
with_items:
|
||||||
|
- /root/.ssh/known_hosts
|
||||||
|
- /etc/ssh/ssh_known_hosts
|
||||||
when: host_is_up|failed
|
when: host_is_up|failed
|
||||||
|
|
||||||
- name: wait for the reassignation
|
- name: spin UP VM using nova_compute
|
||||||
local_action: wait_for host={{ public_ip }} port=22 delay=20 timeout=300
|
sudo: False
|
||||||
|
local_action:
|
||||||
|
module: nova_compute
|
||||||
|
auth_url: "{{os_auth_url}}"
|
||||||
|
login_username: "admin"
|
||||||
|
login_password: "{{ADMIN_PASS}}"
|
||||||
|
login_tenant_name: "{{inventory_tenant}}"
|
||||||
|
name: "{{inventory_instance_name}}"
|
||||||
|
image_id: "{{ image|image_name_to_id('admin', ADMIN_PASS, inventory_tenant, os_auth_url) }}"
|
||||||
|
wait_for: 300
|
||||||
|
flavor_id: "{{ instance_type|flavor_name_to_id('admin', ADMIN_PASS, inventory_tenant, os_auth_url) }}"
|
||||||
|
security_groups: "{{security_group}}"
|
||||||
|
key_name: "{{ keypair }}"
|
||||||
|
nics: "{{ cloud_networks }}"
|
||||||
|
user_data: "#cloud-config\ndisable_root: 0"
|
||||||
|
floating_ips:
|
||||||
|
- "{{public_ip}}"
|
||||||
|
register: nova_result
|
||||||
when: host_is_up|failed
|
when: host_is_up|failed
|
||||||
|
|
||||||
# attach and mount volumes
|
# instance can be both id and name, volume must be id
|
||||||
- name: attach volumes to the system
|
# volume must be id
|
||||||
local_action: shell euca-attach-volume --config {{ persist_config }} -i {{ inst_res.instances[0].id }} {{ item }}
|
- local_action: shell nova --os-auth-url="{{os_auth_url}}" --os-username="admin" --os-password="{{ADMIN_PASS}}" --os-tenant-name={{inventory_tenant}} volume-list | grep ' {{item.volume_id}} ' | grep 'available' && nova --os-auth-url="{{os_auth_url}}" --os-username="admin" --os-password="{{ADMIN_PASS}}" --os-tenant-name={{inventory_tenant}} volume-attach "{{inventory_instance_name}}" "{{item.volume_id}}" "{{item.device}}"
|
||||||
with_items: volumes
|
with_items: volumes
|
||||||
when: volumes is defined and host_is_up|failed
|
ignore_errors: yes
|
||||||
|
when: volumes is defined
|
||||||
|
|
||||||
|
- name: wait for he host to be hot
|
||||||
|
local_action: wait_for host={{ public_ip }} port=22 delay=1 timeout=600
|
||||||
|
when: host_is_up|failed
|
||||||
|
|
||||||
|
- name: gather ssh host key from new instance
|
||||||
|
local_action: command ssh-keyscan -t rsa {{ inventory_hostname }}
|
||||||
|
ignore_errors: True
|
||||||
|
register: hostkey
|
||||||
|
when: host_is_up|failed
|
||||||
|
|
||||||
|
- name: add new ssh host key (you still need to add it to official ssh_host_keys later)
|
||||||
|
local_action: known_hosts path={{item}} key="{{ hostkey.stdout }}" host={{ inventory_hostname }} state=present
|
||||||
|
ignore_errors: True
|
||||||
|
with_items:
|
||||||
|
- /root/.ssh/known_hosts
|
||||||
|
- /etc/ssh/ssh_known_hosts
|
||||||
|
when: host_is_up|failed
|
||||||
|
|
||||||
|
# SSH is up and running, however cloud-init still did not deployed ssh keypair
|
||||||
|
# we have to wait some time. 10 sec is usually enough, but not always.
|
||||||
|
|
||||||
|
- name: waiting for cloud-init
|
||||||
|
pause: seconds=30
|
||||||
|
when: host_is_up|failed
|
||||||
|
|
||||||
|
#
|
||||||
|
# Next we try and gather facts. If the host doesn't have python2 this will fail.
|
||||||
|
#
|
||||||
|
|
||||||
|
- name: gather facts
|
||||||
|
setup:
|
||||||
|
always_run: True
|
||||||
|
ignore_errors: True
|
||||||
|
register: facts
|
||||||
|
|
||||||
|
#
|
||||||
|
# If that failed, then we use the raw module to install things
|
||||||
|
#
|
||||||
|
|
||||||
|
- name: install python2 and dnf stuff
|
||||||
|
raw: dnf -y install python-dnf libselinux-python
|
||||||
|
when: facts|failed
|
||||||
|
|
||||||
|
# TODO - somehow guess when keypair is finally deployed and return little bit earlier
|
||||||
|
## We need to specify user, here we trying with fedora or root
|
||||||
|
#- name: wait until ssh is available
|
||||||
|
# # local_action: shell false; until [ "$?" -eq "0" ]; do sleep 2; ssh -o PasswordAuthentication=no fedora@{{ public_ip }} 'echo foobar' || ssh -o PasswordAuthentication=no root@{{ public_ip }} 'echo foobar'; done
|
||||||
|
# # local_action: shell false; until [ "$?" -eq "0" ]; do sleep 2; ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PasswordAuthentication=no fedora@{{ public_ip }} 'echo foobar'; done
|
||||||
|
# local_action: shell whoami && ssh -vvvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PasswordAuthentication=no fedora@{{ public_ip }} 'echo foobar'
|
||||||
|
# # async: 20
|
||||||
|
# # poll: 5
|
||||||
|
# ignore_errors: True
|
||||||
|
#
|
||||||
|
|
|
@ -1,104 +0,0 @@
|
||||||
# New tasks to spin up instance in https://fedorainfracloud.org
|
|
||||||
|
|
||||||
- name: check it out
|
|
||||||
local_action: shell nc -w 5 {{ inventory_hostname }} 22 < /dev/null
|
|
||||||
register: host_is_up
|
|
||||||
ignore_errors: true
|
|
||||||
|
|
||||||
- name: clean out old known_hosts (name based entries)
|
|
||||||
local_action: known_hosts path={{item}} host={{inventory_hostname}} state=absent
|
|
||||||
ignore_errors: True
|
|
||||||
with_items:
|
|
||||||
- /root/.ssh/known_hosts
|
|
||||||
- /etc/ssh/ssh_known_hosts
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
- name: clean out old known_hosts (IP based entries)
|
|
||||||
local_action: known_hosts path={{item}} host={{ lookup('dig', inventory_hostname, wantlist=False) }} state=absent
|
|
||||||
ignore_errors: True
|
|
||||||
with_items:
|
|
||||||
- /root/.ssh/known_hosts
|
|
||||||
- /etc/ssh/ssh_known_hosts
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
- name: spin UP VM using nova_compute
|
|
||||||
sudo: False
|
|
||||||
local_action:
|
|
||||||
module: nova_compute
|
|
||||||
auth_url: "{{os_auth_url}}"
|
|
||||||
login_username: "admin"
|
|
||||||
login_password: "{{ADMIN_PASS}}"
|
|
||||||
login_tenant_name: "{{inventory_tenant}}"
|
|
||||||
name: "{{inventory_instance_name}}"
|
|
||||||
image_id: "{{ image|image_name_to_id('admin', ADMIN_PASS, inventory_tenant, os_auth_url) }}"
|
|
||||||
wait_for: 300
|
|
||||||
flavor_id: "{{ instance_type|flavor_name_to_id('admin', ADMIN_PASS, inventory_tenant, os_auth_url) }}"
|
|
||||||
security_groups: "{{security_group}}"
|
|
||||||
key_name: "{{ keypair }}"
|
|
||||||
nics: "{{ cloud_networks }}"
|
|
||||||
user_data: "#cloud-config\ndisable_root: 0"
|
|
||||||
floating_ips:
|
|
||||||
- "{{public_ip}}"
|
|
||||||
register: nova_result
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
# instance can be both id and name, volume must be id
|
|
||||||
# volume must be id
|
|
||||||
- local_action: shell nova --os-auth-url="{{os_auth_url}}" --os-username="admin" --os-password="{{ADMIN_PASS}}" --os-tenant-name={{inventory_tenant}} volume-list | grep ' {{item.volume_id}} ' | grep 'available' && nova --os-auth-url="{{os_auth_url}}" --os-username="admin" --os-password="{{ADMIN_PASS}}" --os-tenant-name={{inventory_tenant}} volume-attach "{{inventory_instance_name}}" "{{item.volume_id}}" "{{item.device}}"
|
|
||||||
with_items: volumes
|
|
||||||
ignore_errors: yes
|
|
||||||
when: volumes is defined
|
|
||||||
|
|
||||||
- name: wait for he host to be hot
|
|
||||||
local_action: wait_for host={{ public_ip }} port=22 delay=1 timeout=600
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
- name: gather ssh host key from new instance
|
|
||||||
local_action: command ssh-keyscan -t rsa {{ inventory_hostname }}
|
|
||||||
ignore_errors: True
|
|
||||||
register: hostkey
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
- name: add new ssh host key (you still need to add it to official ssh_host_keys later)
|
|
||||||
local_action: known_hosts path={{item}} key="{{ hostkey.stdout }}" host={{ inventory_hostname }} state=present
|
|
||||||
ignore_errors: True
|
|
||||||
with_items:
|
|
||||||
- /root/.ssh/known_hosts
|
|
||||||
- /etc/ssh/ssh_known_hosts
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
# SSH is up and running, however cloud-init still did not deployed ssh keypair
|
|
||||||
# we have to wait some time. 10 sec is usually enough, but not always.
|
|
||||||
|
|
||||||
- name: waiting for cloud-init
|
|
||||||
pause: seconds=30
|
|
||||||
when: host_is_up|failed
|
|
||||||
|
|
||||||
#
|
|
||||||
# Next we try and gather facts. If the host doesn't have python2 this will fail.
|
|
||||||
#
|
|
||||||
|
|
||||||
- name: gather facts
|
|
||||||
setup:
|
|
||||||
always_run: True
|
|
||||||
ignore_errors: True
|
|
||||||
register: facts
|
|
||||||
|
|
||||||
#
|
|
||||||
# If that failed, then we use the raw module to install things
|
|
||||||
#
|
|
||||||
|
|
||||||
- name: install python2 and dnf stuff
|
|
||||||
raw: dnf -y install python-dnf libselinux-python
|
|
||||||
when: facts|failed
|
|
||||||
|
|
||||||
# TODO - somehow guess when keypair is finally deployed and return little bit earlier
|
|
||||||
## We need to specify user, here we trying with fedora or root
|
|
||||||
#- name: wait until ssh is available
|
|
||||||
# # local_action: shell false; until [ "$?" -eq "0" ]; do sleep 2; ssh -o PasswordAuthentication=no fedora@{{ public_ip }} 'echo foobar' || ssh -o PasswordAuthentication=no root@{{ public_ip }} 'echo foobar'; done
|
|
||||||
# # local_action: shell false; until [ "$?" -eq "0" ]; do sleep 2; ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PasswordAuthentication=no fedora@{{ public_ip }} 'echo foobar'; done
|
|
||||||
# local_action: shell whoami && ssh -vvvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PasswordAuthentication=no fedora@{{ public_ip }} 'echo foobar'
|
|
||||||
# # async: 20
|
|
||||||
# # poll: 5
|
|
||||||
# ignore_errors: True
|
|
||||||
#
|
|
Loading…
Add table
Add a link
Reference in a new issue