--- - name: Azure Webserver hosts: localhost connection: local vars: user: alex location: northeurope virtual_network_name: webserver_{{ user }} subnet: Webserver resource_group: webserver_{{ user }} domain_sub: domain{{ user }} ssh_public_key: "{{lookup('file', '~/.ssh/id_rsa.pub') }}" tasks: - name: Create a virtual network azure.azcollection.azure_rm_virtualnetwork: resource_group: "{{ resource_group }}" name: "{{ virtual_network_name }}" address_prefixes_cidr: 10.99.0.0/16 tags: solution: webserver_{{ user }} delete: ansibletraining - name: Create a subnet azure.azcollection.azure_rm_subnet: resource_group: "{{ resource_group }}" virtual_network_name: "{{ virtual_network_name }}" name: "{{ subnet }}" address_prefix_cidr: 10.99.0.0/24 - name: Create a public ip address for webserver register: webserver_pub_ip azure.azcollection.azure_rm_publicipaddress: resource_group: "{{ resource_group }}" name: public_ip_webserver allocation_method: static domain_name: webserver{{ domain_sub }} tags: solution: webserver_{{ user }} delete: ansibletraining - name: Create Security Group for webserver azure.azcollection.azure_rm_securitygroup: resource_group: "{{ resource_group }}" name: webserver_securitygroup purge_rules: true rules: - name: Allow_SSH protocol: Tcp destination_port_range: 22 access: Allow priority: 100 direction: Inbound - name: Allow_HTTP protocol: Tcp destination_port_range: 80 access: Allow priority: 101 direction: Inbound tags: solution: webserver_{{ user }} delete: ansibletraining - name: Create a network interface for webserver azure.azcollection.azure_rm_networkinterface: name: webserver_nic01 resource_group: "{{ resource_group }}" virtual_network: "{{ virtual_network_name }}" subnet_name: "{{ subnet }}" security_group: webserver_securitygroup ip_configurations: - name: webserver_nic01_ipconfig public_ip_address_name: public_ip_webserver primary: true tags: solution: webserver_{{ user }} delete: ansibletraining - name: Create a VM webserver azure.azcollection.azure_rm_virtualmachine: resource_group: "{{ resource_group }}" name: webserver os_type: Linux admin_username: "{{ user }}" ssh_password_enabled: false ssh_public_keys: - path: /home/{{ user }}/.ssh/authorized_keys key_data: "{{ ssh_public_key }}" managed_disk_type: Standard_LRS state: present image: offer: RHEL publisher: RedHat sku: "8_4" version: latest vm_size: Standard_A1_v2 network_interfaces: webserver_nic01 tags: solution: webserver_{{ user }} delete: ansibletraining - name: Show webserver public ip ansible.builtin.debug: msg: "{{ webserver_pub_ip.state.ip_address }}" - name: Wait for ssh on webserver ansible.builtin.wait_for: host: "{{ webserver_pub_ip.state.ip_address }}" port: 22 delay: 10 timeout: 600 - name: Add webserver to ssh known_hosts ansible.builtin.shell: ssh-keyscan -t ecdsa {{ webserver_pub_ip.state.ip_address }} >> /home/{{ user }}/.ssh/known_hosts