From 03c805cb8779eb96fd69d2b388a4077dbf4c0f6d Mon Sep 17 00:00:00 2001 From: Jack Ivanov Date: Tue, 13 Dec 2016 21:58:45 +0300 Subject: [PATCH] reorganize the wait_for functions #159 --- deploy.yml | 14 ++++++++++++++ roles/cloud-azure/tasks/main.yml | 4 ++-- roles/cloud-digitalocean/tasks/main.yml | 4 ++-- roles/cloud-ec2/tasks/main.yml | 6 ++---- roles/cloud-gce/tasks/main.yml | 4 ++-- roles/common/tasks/main.yml | 15 +++++++-------- roles/local/tasks/main.yml | 5 ++--- users.yml | 11 +++++++++-- 8 files changed, 40 insertions(+), 23 deletions(-) diff --git a/deploy.yml b/deploy.yml index c0bf989..e2817ec 100644 --- a/deploy.yml +++ b/deploy.yml @@ -11,6 +11,20 @@ - { role: cloud-azure, tags: ['azure'] } - { role: local, tags: ['local'] } + post_tasks: + - name: Wait until SSH becomes ready... + local_action: + module: wait_for + port: 22 + host: "{{ cloud_instance_ip }}" + search_regex: "OpenSSH" + delay: 10 + timeout: 320 + state: present + become: false + tags: + - cloud + - name: Post-provisioning tasks hosts: vpn-host gather_facts: false diff --git a/roles/cloud-azure/tasks/main.yml b/roles/cloud-azure/tasks/main.yml index d894b2e..6c27186 100644 --- a/roles/cloud-azure/tasks/main.yml +++ b/roles/cloud-azure/tasks/main.yml @@ -67,5 +67,5 @@ cloud_provider: azure ipv6_support: no -- name: Wait for SSH to become available - local_action: "wait_for port=22 host={{ ip_address }} timeout=320" +- set_fact: + cloud_instance_ip: "{{ ip_address }}" diff --git a/roles/cloud-digitalocean/tasks/main.yml b/roles/cloud-digitalocean/tasks/main.yml index 9fb047d..73ebc2f 100644 --- a/roles/cloud-digitalocean/tasks/main.yml +++ b/roles/cloud-digitalocean/tasks/main.yml @@ -36,5 +36,5 @@ cloud_provider: digitalocean ipv6_support: yes -- name: Wait for SSH to become available - local_action: "wait_for port=22 host={{ do.droplet.ip_address }} timeout=320" +- set_fact: + cloud_instance_ip: "{{ do.droplet.ip_address }}" diff --git a/roles/cloud-ec2/tasks/main.yml b/roles/cloud-ec2/tasks/main.yml index ec4b1bf..8c48019 100644 --- a/roles/cloud-ec2/tasks/main.yml +++ b/roles/cloud-ec2/tasks/main.yml @@ -108,7 +108,5 @@ ipv6_support: no with_items: "{{ ec2.tagged_instances }}" -- name: Wait for SSH to become available - local_action: "wait_for port=22 host={{ item.public_dns_name }} timeout=320" - with_items: "{{ ec2.tagged_instances }}" - become: false +- set_fact: + cloud_instance_ip: "{{ ec2.tagged_instances[0].public_ip }}" diff --git a/roles/cloud-gce/tasks/main.yml b/roles/cloud-gce/tasks/main.yml index 959ec6f..7b88bfd 100644 --- a/roles/cloud-gce/tasks/main.yml +++ b/roles/cloud-gce/tasks/main.yml @@ -36,5 +36,5 @@ credentials_file: "{{ credentials_file }}" project_id: "{{ credentials_file_lookup.project_id }}" -- name: Waiting for SSH to become available - local_action: "wait_for port=22 host={{ google_vm.instance_data[0].public_ip }} timeout=320" +- set_fact: + cloud_instance_ip: "{{ google_vm.instance_data[0].public_ip }}" diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index a5730ac..12d7109 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -28,15 +28,14 @@ tags: - cloud -- name: Wait for shutdown - local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped timeout=120 - when: reboot_required is defined and reboot_required.stdout == 'required' - become: false - tags: - - cloud - - name: Wait until SSH becomes ready... - local_action: wait_for host={{ inventory_hostname }} port=22 state=started timeout=120 + local_action: + module: wait_for + port: 22 + host: "{{ inventory_hostname }}" + search_regex: OpenSSH + delay: 10 + timeout: 320 when: reboot_required is defined and reboot_required.stdout == 'required' become: false tags: diff --git a/roles/local/tasks/main.yml b/roles/local/tasks/main.yml index 4be2433..b1a73ea 100644 --- a/roles/local/tasks/main.yml +++ b/roles/local/tasks/main.yml @@ -19,6 +19,5 @@ cloud_provider: local when: server_ip == "localhost" -- name: Waiting for SSH to become available - local_action: "wait_for port=22 host={{ server_ip }} timeout=320" - when: server_ip != "localhost" +- set_fact: + cloud_instance_ip: "{{ server_ip }}" diff --git a/users.yml b/users.yml index fb79ba2..7f074bc 100644 --- a/users.yml +++ b/users.yml @@ -41,8 +41,15 @@ ssh_tunneling_enabled: "{{ ssh_tunneling_enabled }}" IP_subject: "{{ IP_subject }}" - - name: Wait for SSH to become available - local_action: "wait_for port=22 host={{ server_ip }} timeout=320" + - name: Wait until SSH becomes ready... + local_action: + module: wait_for + port: 22 + host: "{{ server_ip }}" + search_regex: "OpenSSH" + delay: 10 + timeout: 320 + state: present become: false - name: User management