---
- hosts: localhost
  become: false
  gather_facts: no
  tasks:
    - name: print playbook_dir path
      debug:
        msg: "{{ playbook_dir }}"

    - name: Create a resource group
      azure_rm_resourcegroup:
        name: "{{ resource_group }}"
        location: "{{ location }}"

    - name: Create virtual network
      azure_rm_virtualnetwork:
        resource_group: "{{ resource_group }}"
        name: tepVirtNet
        address_prefixes: "10.10.0.0/16"

    - name: Add subnet
      azure_rm_subnet:
        resource_group: "{{ resource_group }}"
        name: tepSubnet
        address_prefix: "10.10.0.0/24"
        virtual_network: tepVirtNet

    - name: Create azure instances
      azure_rm_virtualmachine:
        resource_group: "{{ resource_group }}"
        name: "{{ item|trim }}"
        admin_username: "{{ admin_username }}"
        admin_password: "{{ admin_password }}"
        vm_size: "{{ cloud_machine_type }}"
        image:
          offer: CentOS
          publisher: OpenLogic
          sku: '7.5'
          version: latest
      async: 600
      poll: 5
      with_items: "{{ instance_names.split(',') }}"

    - name: Get facts for all Public IPs within a resource groups
      azure_rm_publicipaddress_facts:
        resource_group: "{{ resource_group }}"
      register: vm_ip_list_cmd

    - name: Get facts for all vm within a resource groups
      azure_rm_networkinterface_facts:
        resource_group: "{{ resource_group }}"
      register: nic_list_cmd

    - set_fact:
        nic_list: "{{ nic_list_cmd.ansible_facts.azure_networkinterfaces }}"

    - set_fact:
        vm_ip_list: "{{ vm_ip_list_cmd.ansible_facts.azure_publicipaddresses }}"

    - name: azure nic list info
      debug:
        msg: "{{ nic_list }}"

    - name: azure vm ip list info
      debug:
        msg: "{{ vm_ip_list }}"

    - name: Add instances to host group
      add_host:
        hostname: "{{ item.properties.ipAddress }}"
        groupname: "waitfor_hosts"
      with_items: "{{ vm_ip_list }}"

    - name: Template the inventory
      template:
        src: ../templates/inventory-azure.j2
        dest: "{{ inventory_path }}"

- name: Wait for instances
  hosts: waitfor_hosts
  gather_facts: false
  tasks:
    - name: Wait for SSH to come up.
      connection: local
      wait_for:
        host: "{{inventory_hostname}}"
        port: 22
        delay: 60
        timeout: 240
        state: started
