# Usage: ansible-playbook linux-vm-complete.yaml --extra-vars "resource_group_name= pip_name= vnet_name= network_address= state= " # Usage: ansible-playbook linux-vm-complete.yaml --extra-vars "vm_name=ansible-vm-1 resource_group_name=ansible-rg pip_name=ansible-pip1 vnet_name=ansible-vnet subnet_name=subnet1 vnic_name=ansible-vm-vnic1 security_group_name=ansible-security-group-1 state=present" - name: Create Azure VM hosts: localhost connection: local vars: zone: ansiblezone.test nios_provider: host: 10.60.27.240 username: admin password: infoblox tasks: - name: Create public IP address azure_rm_publicipaddress: resource_group: "{{ resource_group_name }}" allocation_method: Static name: "{{ pip_name }}" register: output_ip_address - name: Dump public IP for VM which will be created debug: msg: "The public IP is {{ output_ip_address.state.ip_address }}." - name: Return next available IP address for network 10.0.0.0/24 set_fact: ipaddr: "{{ lookup('nios_next_ip', '10.0.0.0/24', provider=nios_provider)[0] }}" register: output_next_ip - debug: var: ipaddr - name: create host record nios_host_record: name: "{{ vm_name }}.{{ zone }}" view: default ipv4addrs: - ipv4addr: "{{ ipaddr }}" # ipv6addrs: # - ipv6addr: fd00::2 ttl: 3600 extattrs: Site: Test Site comment: Created with Ansible state: "{{ state }}" provider: "{{ nios_provider }}" register: output_host_record - debug: var: output_host_record - name: Create vNIC azure_rm_networkinterface: resource_group: "{{ resource_group_name }}" name: "{{ vnic_name }}" virtual_network: "{{ vnet_name }}" subnet: "{{ subnet_name }}" public_ip_name: "{{ pip_name }}" security_group: "{{ security_group_name }}" private_ip_address: "{{ ipaddr }}" - name: Create VM azure_rm_virtualmachine: resource_group: "{{ resource_group_name }}" name: "{{ vm_name }}" vm_size: Standard_DS1_v2 admin_username: azureuser admin_password: 123infobloxA$ ssh_password_enabled: true # ssh_public_keys: # - path: /home/azureuser/.ssh/authorized_keys # key_data: network_interfaces: "{{ vnic_name }}" image: offer: CentOS publisher: OpenLogic sku: '7.5' version: latest state: "{{ state }}"