gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
In dit artikel wordt beschreven hoe u een virtuele Windows Server 2019-machine implementeert in Azure met Ansible.
In dit artikel leert u het volgende:
- Een brongroep maken
- Een virtueel netwerk, openbaar IP-adres, netwerkbeveiligingsgroep en netwerkinterface maken
- Een virtuele Windows Server-machine implementeren
- Verbinding maken naar de virtuele machine via WinRM
- Een Ansible-playbook uitvoeren om Windows IIS te configureren
Ansible installeren: Voer een van de volgende opties uit:
Voor communicatie via WinRM heeft de Ansible-besturingsserver het Python-pakket pywinrm
nodig.
Voer de volgende opdracht uit op de Ansible-server om te installeren pywinrm
:
pip install "pywinrm>=0.3.0"
Zie Windows Remote Management voor Ansible voor meer informatie.
Maak een Ansible-playbook met de naam azure_windows_vm.yml
en kopieer de volgende inhoud naar het playbook:
---
- name: Create Azure VM
hosts: localhost
connection: local
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: myResourceGroup
location: eastus
Belangrijkste punten:
hosts
op localhost en connection
als _local_
het playbook lokaal wordt uitgevoerd op de Ansible-server.Voeg de volgende taken toe aan het azure_windows_vm.yml
Ansible-playbook om een virtueel netwerk te maken:
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: vNet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: subnet
address_prefix: "10.0.1.0/24"
virtual_network: vNet
Voeg de volgende taken toe aan het azure_windows_vm.yml
playbook om een openbaar IP-adres te maken:
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: pip
register: output_ip_address
- name: Output public IP
debug:
msg: "The public IP is {{ output_ip_address.state.ip_address }}"
Belangrijkste punten:
register
wordt gebruikt om de uitvoer op te slaan in azure_rm_publicipaddress
een variabele met de naam output_ip_address
.debug
module wordt gebruikt om het openbare IP-adres van de virtuele machine naar de console uit te voeren.Netwerkbeveiligingsgroep definieert welk verkeer is toegestaan en niet is toegestaan om de VIRTUELE machine te bereiken.
Als u de WinRM- en HTTP-poorten wilt openen, voegt u de volgende taken toe aan het azure_windows_vm.yml
Ansible-playbook:
- name: Create Network Security Group
azure_rm_securitygroup:
resource_group: myResourceGroup
name: networkSecurityGroup
rules:
- name: 'allow_rdp'
protocol: Tcp
destination_port_range: 3389
access: Allow
priority: 1001
direction: Inbound
- name: 'allow_web_traffic'
protocol: Tcp
destination_port_range:
- 80
- 443
access: Allow
priority: 1002
direction: Inbound
- name: 'allow_powershell_remoting'
protocol: Tcp
destination_port_range:
- 5985
- 5986
access: Allow
priority: 1003
direction: Inbound
- name: Create a network interface
azure_rm_networkinterface:
name: nic
resource_group: myResourceGroup
virtual_network: vNet
subnet_name: subnet
security_group: networkSecurityGroup
ip_configurations:
- name: default
public_ip_address_name: pip
primary: True
Belangrijkste punten:
azure_rm_securitygroup
maakt u een Azure-netwerkbeveiligingsgroep om WinRM-verkeer van de Ansible-server naar de externe host toe te staan door poort 5985
en 5986
.Maak vervolgens een virtuele machine die gebruikmaakt van alle resources die u in de vorige secties van dit artikel hebt gemaakt.
Voeg de volgende taak toe aan het azure_windows_vm.yml
Ansible-playbook:
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: win-vm
vm_size: Standard_DS1_v2
admin_username: azureuser
admin_password: "{{ password }}"
network_interfaces: nic
os_type: Windows
image:
offer: WindowsServer
publisher: MicrosoftWindowsServer
sku: 2019-Datacenter
version: latest
no_log: true
De admin_password
waarde van {{ password }}
is een Ansible-variabele die het wachtwoord van de Windows-VM bevat. Als u die variabele veilig wilt vullen, voegt u een var_prompts
vermelding toe aan het begin van het playbook.
- name: Create Azure VM
hosts: localhost
connection: local
vars_prompt:
- name: password
prompt: "Enter local administrator password"
tasks:
Belangrijkste punten:
var_prompts
dit om variabelen tijdens runtime in te vullen. Voeg no_log: true
toe om te voorkomen dat wachtwoorden worden vastgelegd.Ansible gebruikt PowerShell om externe Windows-hosts te verbinden en te configureren via WinRM.
Als u WinRM wilt configureren, voegt u de volgende ext azure_rm_virtualmachineextension
toe:
- name: Create VM script extension to enable HTTPS WinRM listener
azure_rm_virtualmachineextension:
name: winrm-extension
resource_group: myResourceGroup
virtual_machine_name: win-vm
publisher: Microsoft.Compute
virtual_machine_extension_type: CustomScriptExtension
type_handler_version: '1.9'
settings: '{"fileUris": ["https://raw.githubusercontent.com/ansible/ansible-documentation/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"],"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1"}'
auto_upgrade_minor_version: true
Ansible kan pas verbinding maken met de VIRTUELE machine als WinRM volledig is geconfigureerd.
Voeg de volgende taken toe aan uw playbook om te wachten op de WinRM-verbinding:
- name: Get facts for one Public IP
azure_rm_publicipaddress_info:
resource_group: myResourceGroup
name: 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: 5986
host: '{{ publicipaddress }}'
timeout: 600
Belangrijkste punten:
azure_rm_virtualmachineextension
Met de module kunt u lokaal een PowerShell-script uitvoeren in Azure Windows. Als u het ConfigureRemotingForAnsible.ps1
PowerShell-script uitvoert, configureert u WinRM door zelfondertekende certificaten te maken en de benodigde poorten te openen zodat Ansible verbinding kan maken.azure_rm_publicipaddress_info
module voert een query uit op het openbare IP-adres van Azure en slaat vervolgens set_fact
de uitvoer op in een variabele die de wait_for
module kan gebruiken.In deze sectie vindt u het volledige Ansible-playbook dat u hebt gemaakt met de verschillende stappen in dit artikel.
---
- name: Create Azure VM
hosts: localhost
connection: local
vars_prompt:
- name: password
prompt: "Enter local administrator password"
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: myResourceGroup
location: eastus
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: vNet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: subnet
address_prefix: "10.0.1.0/24"
virtual_network: vNet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: pip
register: output_ip_address
- name: Output public IP
debug:
msg: "The public IP is {{ output_ip_address.state.ip_address }}"
- name: Create Network Security Group
azure_rm_securitygroup:
resource_group: myResourceGroup
name: networkSecurityGroup
rules:
- name: 'allow_rdp'
protocol: Tcp
destination_port_range: 3389
access: Allow
priority: 1001
direction: Inbound
- name: 'allow_web_traffic'
protocol: Tcp
destination_port_range:
- 80
- 443
access: Allow
priority: 1002
direction: Inbound
- name: 'allow_powershell_remoting'
protocol: Tcp
destination_port_range:
- 5985
- 5986
access: Allow
priority: 1003
direction: Inbound
- name: Create a network interface
azure_rm_networkinterface:
name: nic
resource_group: myResourceGroup
virtual_network: vNet
subnet_name: subnet
security_group: networkSecurityGroup
ip_configurations:
- name: default
public_ip_address_name: pip
primary: True
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: win-vm
vm_size: Standard_DS1_v2
admin_username: azureuser
admin_password: "{{ password }}"
network_interfaces: nic
os_type: Windows
image:
offer: WindowsServer
publisher: MicrosoftWindowsServer
sku: 2019-Datacenter
version: latest
no_log: true
- name: Create VM script extension to enable HTTPS WinRM listener
azure_rm_virtualmachineextension:
name: winrm-extension
resource_group: myResourceGroup
virtual_machine_name: win-vm
publisher: Microsoft.Compute
virtual_machine_extension_type: CustomScriptExtension
type_handler_version: '1.9'
settings: '{"fileUris": ["https://raw.githubusercontent.com/ansible/ansible-documentation/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"],"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1"}'
auto_upgrade_minor_version: true
- name: Get facts for one Public IP
azure_rm_publicipaddress_info:
resource_group: myResourceGroup
name: 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: 5986
host: '{{ publicipaddress }}'
timeout: 600
Maak een nieuw Ansible-playbook met de naam connect_azure_windows_vm.yml
en kopieer de volgende inhoud naar het playbook:
---
- hosts: all
vars_prompt:
- name: ansible_password
prompt: "Enter local administrator password"
vars:
ansible_user: azureuser
ansible_connection: winrm
ansible_winrm_transport: ntlm
ansible_winrm_server_cert_validation: ignore
tasks:
- name: Test connection
win_ping:
Voer het Ansible-playbook uit.
ansible-playbook connect_azure_windows_vm.yml -i <publicIPaddress>,
Vervang <publicIPaddress>
door het adres van uw virtuele machine.
Belangrijkste punten:
Sla de volgende code op als delete_rg.yml
.
---
- hosts: localhost
tasks:
- name: Deleting resource group - "{{ name }}"
azure_rm_resourcegroup:
name: "{{ name }}"
state: absent
register: rg
- debug:
var: rg
Voer het playbook uit met behulp van de ansible-playbook-opdracht . Vervang de tijdelijke aanduiding door de naam van de resourcegroep die u wilt verwijderen. Alle resources in de resourcegroep worden verwijderd.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Belangrijkste punten:
register
variabele en debug
sectie van het playbook worden de resultaten weergegeven wanneer de opdracht is voltooid.gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenTraining
Module
Een virtuele Windows-machine maken in Azure - Training
Leer hoe u binnen enkele minuten een virtuele Azure-machine maakt die kan worden gebruikt als een lokaal fysiek bureaublad of een lokale server.
Certificering
Microsoft Gecertificeerd: Azure Beheerder Medewerker - Certifications
Demonstreer belangrijke vaardigheden voor het configureren, beheren, beveiligen en beheren van belangrijke professionele functies in Microsoft Azure.
Documentatie
Een virtuele Linux-machine maken in Azure met Ansible
Meer informatie over het maken van een virtuele Linux-machine in Azure met behulp van Ansible
Inleiding tot het gebruik van Ansible voor het automatiseren van cloudinrichting, configuratiebeheer en toepassingsimplementaties.
Aan de slag- Ansible configureren op een Azure-VM
Meer informatie over het installeren en configureren van Ansible op een Azure-VM voor het beheren van Azure-resources.