Files
2024-07-12 12:58:40 +02:00

123 lines
4.5 KiB
YAML

---
# tasks file for azure-createwindowsvm
# - name: Create public IP address
# azure_rm_publicipaddress:
# resource_group: "{{RG_name}}"
# allocation_method: Static
# name: "{{hostname}}-pip"
# register: output_ip_address
# - name: Output public IP
# debug:
# msg: "The public IP is {{ output_ip_address.state.ip_address }}"
- name: Get facts for one resource group
azure_rm_resourcegroup_info:
name: "{{RG_name}}"
register: rginfo
- name: Create a network interface
azure_rm_networkinterface:
name: "{{hostname}}-nic"
resource_group: "{{RG_name}}"
location: westeurope
virtual_network: "/subscriptions/dd4dbc55-c970-4a1f-8ddd-8cb7ae7900dd/resourceGroups/rg-network-tst-01/providers/Microsoft.Network/virtualNetworks/vnet-awe-tst-01"
subnet_name: "{{subnetname}}"
enable_accelerated_networking: True
security_group: "/subscriptions/dd4dbc55-c970-4a1f-8ddd-8cb7ae7900dd/resourceGroups/rg-network-tst-01/providers/Microsoft.Network/networkSecurityGroups/nsg-tst-01-green"
ip_configurations:
- name: default
# public_ip_address_name: "{{hostname}}-pip"
primary: True
register: new_nic
- name: Get private IP of NIC
azure_rm_networkinterface_info:
resource_group: "{{RG_name}}"
name: "{{hostname}}-nic"
register: nic_info
- name: Display private IP of NIC
debug:
var: "nic_info.networkinterfaces[0].ip_configurations[0].private_ip_address"
- name: Create VM
azure_rm_virtualmachine:
resource_group: "{{RG_name}}"
name: "{{hostname}}"
vm_size: "{{vmsize}}"
admin_username: ApeAdmin
admin_password: "{{ password }}"
network_interfaces: "{{hostname}}-nic"
os_type: Windows
boot_diagnostics:
enabled: false
managed_disk_type: "Premium_LRS"
os_disk_name: "{{hostname}}-osdisk"
os_disk_size_gb: 128
image:
offer: WindowsServer
publisher: MicrosoftWindowsServer
sku: "{{win_sku}}"
version: latest
tags:
Dexcare: "{{tag_dexcare}}"
ApplicationITContact: "{{tag_ApplicationITContact}}"
DexMach_Protection: "ManagedByOther"
Schedule: "{{tag_Schedule}}"
ServiceHours: "{{tag_ServiceHours}}"
Criticality: "{{tag_Criticality}}"
UpdateSchedule: "{{tag_UpdateSchedule}}"
TeamSpecialist: "{{tag_TeamSpecialist}}"
no_log: false
# - name: Create VM script extension to enable HTTPS WinRM listener
# azure_rm_virtualmachineextension:
# name: winrm-extension
# resource_group: "{{RG_name}}"
# virtual_machine_name: "{{hostname}}"
# publisher: Microsoft.Compute
# virtual_machine_extension_type: CustomScriptExtension
# type_handler_version: '1.9'
# settings: '{"fileUris": ["https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"],"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1"}'
# auto_upgrade_minor_version: true
- name: Enable winrm
azure_rm_virtualmachineextension:
name: winrm-extension
resource_group: "{{RG_name}}"
virtual_machine_name: "{{hostname}}"
publisher: Microsoft.Compute
virtual_machine_extension_type: CustomScriptExtension
type_handler_version: '1.9'
settings: '{"commandToExecute": "powershell winrm quickconfig -force"}'
auto_upgrade_minor_version: true
- name: Open port
azure_rm_virtualmachineextension:
name: winrm-extension
resource_group: "{{RG_name}}"
virtual_machine_name: "{{hostname}}"
publisher: Microsoft.Compute
virtual_machine_extension_type: CustomScriptExtension
type_handler_version: '1.9'
settings: {"commandToExecute": "powershell New-NetFirewallRule -DisplayName 'Winrm' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5985"}
auto_upgrade_minor_version: true
# - name: Get facts for one Public IP
# azure_rm_publicipaddress_info:
# resource_group: "{{RG_name}}"
# name: "{{hostname}}-pip"
# register: publicipaddresses
# - name: set public ip address fact
# set_fact: publicipaddress="{{ publicipaddresses | json_query('publicipaddresses[0].ip_address')}}"
- name: wait for the WinRM port to come online
wait_for:
port: 5985
host: "{{nic_info.networkinterfaces[0].ip_configurations[0].private_ip_address}}"
timeout: 6