Oktatóanyag: Az Azure-erőforrások dinamikus készleteinek konfigurálása az Ansible használatával
Fontos
Az Ansible 2.8 (vagy újabb) szükséges a jelen cikkben szereplő minta forgatókönyvek futtatásához.
Figyelemfelhívás
Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.
Az Ansible dinamikus leltárfunkció eltávolítja a statikus leltárfájlok karbantartásának terhét.
Ebben az oktatóanyagban az Azure dinamikus leltár beépülő modulját fogja használni az Ansible-készlet feltöltéséhez.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Konfiguráljon két teszt virtuális gépet.
- Címkék hozzáadása Azure-beli virtuális gépekhez
- Dinamikus leltár létrehozása
- Feltételes és kulcsos csoportok használata csoporttagságok feltöltéséhez
- Forgatókönyvek futtatása a dinamikus leltárban lévő csoportokon
Előfeltételek
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- Azure-szolgáltatásnév: Hozzon létre egy egyszerű szolgáltatást, és jegyezze fel a következő értékeket: appId, displayName, password és tenant.
Az Ansible telepítése: Válasszon az alábbi lehetőségek közül:
- Az Ansible telepítése és konfigurálása Linux rendszerű virtuális gépen
- Konfigurálja az Azure Cloud Shellt , és – ha nincs hozzáférése Linux rendszerű virtuális géphez – hozzon létre egy virtuális gépet az Ansible használatával.
Azure-beli virtuális gépek létrehozása
Jelentkezzen be az Azure Portalra.
Nyissa meg a Cloud Shellt.
Hozzon létre egy Azure-erőforráscsoportot az oktatóanyaghoz tartozó virtuális gépek tárolásához.
Fontos
Az ebben a lépésben létrehozott Azure-erőforráscsoportnak teljes egészében kisbetűs névvel kell rendelkeznie. Ellenkező esetben a dinamikus készlet létrehozása sikertelen lesz.
az group create --resource-group ansible-inventory-test-rg --location eastus
Hozzon létre két Linux rendszerű virtuális gépet az Azure-ban az alábbi technikák egyikével:
Ansible forgatókönyv – A cikk, amely egy alapszintű Linux rendszerű virtuális gépet hoz létre az Azure-ban az Ansible-lel , és egy alapszintű Windows rendszerű virtuális gép létrehozása az Azure-ban az Ansible segítségével bemutatja, hogyan hozhat létre virtuális gépet ansible-forgatókönyvből.
Azure CLI – A Cloud Shellben az alábbi parancsok mindegyikének kiadása a két virtuális gép létrehozásához:
az vm create \ --resource-group ansible-inventory-test-rg \ --name win-vm \ --image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest \ --admin-username azureuser \ --admin-password <password> az vm create \ --resource-group ansible-inventory-test-rg \ --name linux-vm \ --image CentOS85Gen2 \ --admin-username azureuser \ --admin-password <password>
Cserélje le a
<password>
jelszót.
Alkalmazásszerepkör-címkék hozzáadása
A címkék az Azure-erőforrások rendszerezésére és kategorizálására szolgálnak. Az Azure-beli virtuális gépek alkalmazásszerepkörének hozzárendelésével a címkéket csoportnévként használhatja az Azure dinamikus készletében.
Futtassa a következő parancsokat a virtuálisgép-címkék frissítéséhez:
az vm update \
--resource-group ansible-inventory-test-rg \
--name linux-vm \
--set tags.applicationRole='message-broker'
az vm update \
--resource-group ansible-inventory-test-rg \
--name win-vm \
--set tags.applicationRole='web-server'
További információ az Azure címkézési stratégiáiról a címkézési stratégia definiálása című témakörben.
Dinamikus leltár létrehozása
Az Ansible egy Azure-beli dinamikus leltár beépülő modult biztosít.
A következő lépések végigvezetik a beépülő modulon:
Dinamikus leltár létrehozása elnevezve
myazure_rm.yml
plugin: azure_rm include_vm_resource_groups: - ansible-inventory-test-rg auth_source: auto
Kulcspont:
- Az Ansible a leltárfájl nevét és bővítményét használja annak azonosítására, hogy melyik készlet beépülő modult használja. Az Azure dinamikus leltár beépülő modul használatához a fájlnak egy vagy több kiterjesztéssel
azure_rm
kell rendelkeznieyml
yaml
.
- Az Ansible a leltárfájl nevét és bővítményét használja annak azonosítására, hogy melyik készlet beépülő modult használja. Az Azure dinamikus leltár beépülő modul használatához a fájlnak egy vagy több kiterjesztéssel
Futtassa a következő parancsot az erőforráscsoportban lévő virtuális gépek lekérdezéséhez:
ansible-inventory -i myazure_rm.yml --graph
A parancs futtatásakor az alábbi kimenethez hasonló eredmények láthatók:
@all: |--@ungrouped: | |--linux-vm_cdb4 | |--win-vm_3211
Mindkét virtuális gép a ungrouped
csoporthoz tartozik, amely az all
Ansible-leltárban szereplő csoport gyermeke.
Kulcspont:
- Alapértelmezés szerint az Azure dinamikus leltár beépülő modul globálisan egyedi neveket ad vissza. Ez az oka a virtuálisgép-nevek utáni további karaktereknek. Ezt letilthatja a dinamikus leltárhoz való hozzáadással
plain_host_names: yes
.
Azure-beli virtuálisgép-gazdagépek keresése
Futtassa a következő parancsot az hostvars
összes megtekintéséhez:
ansible-inventory -i myazure_rm.yml --list
{
"_meta": {
"hostvars": {
"linux-vm_cdb4": {
"ansible_host": "52.188.118.79",
"availability_zone": null,
"computer_name": "linux-vm",
"default_inventory_hostname": "linux-vm_cdb4",
"id": "/subscriptions/<subscriptionid>/resourceGroups/ansible-inventory-test-rg/providers/Microsoft.Compute/virtualMachines/linux-vm",
"image": {
"offer": "CentOS",
"publisher": "OpenLogic",
"sku": "7.7",
"version": "latest"
},
...,
"tags": {
"applicationRole": "message-broker"
},
...
},
"win-vm_3211": {
"ansible_host": "52.188.112.110",
"availability_zone": null,
"computer_name": "win-vm",
"default_inventory_hostname": "win-vm_3211",
"id": "/subscriptions/<subscriptionid>/resourceGroups/ansible-inventory-test-rg/providers/Microsoft.Compute/virtualMachines/win-vm",
"image": {
"offer": "WindowsServer",
"publisher": "MicrosoftWindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
...
"tags": {
"applicationRole": "web-server"
},
...
}
}
},
...
}
}
Az Azure-ból származó információk lekérésével a dinamikus leltár feltölti az hostvars
egyes Azure-beli virtuális gépekhez tartozó adatokat. Ezek hostvars
alapján határozhatja meg a virtuálisgép-csoporttagságokat az Ansible-leltárban.
Csoporttagság hozzárendelése conditional_groups
Minden feltételes csoport két részből áll. A csoport neve és a tag csoporthoz való hozzáadásának feltétele.
A tulajdonsággal image.offer
feltételes csoporttagságot hozhat létre a linuxos virtuális géphez.
Nyissa meg a myazure_rm.yml
dinamikus leltárt, és adja hozzá a következőket conditional_group
:
plugin: azure_rm
include_vm_resource_groups:
- ansible-inventory-test-rg
auth_source: auto
conditional_groups:
linux: "'CentOS' in image.offer"
windows: "'WindowsServer' in image.offer"
Futtassa a ansible-inventory
--graph
következő lehetőséget:
ansible-inventory -i myazure_rm.yml --graph
@all:
|--@linux:
| |--linux-vm_cdb4
|--@ungrouped:
|--@windows:
| |--win-vm_3211
A kimenetből láthatja, hogy a virtuális gépek már nincsenek társítva a ungrouped
csoporthoz. Ehelyett mindegyik hozzá lett rendelve egy új csoporthoz, amelyet a dinamikus leltár hozott létre.
Kulcspont:
- A feltételes csoportok lehetővé teszik adott csoportok elnevezését a készleten belül, és feltöltheti őket a használatával
hostvars
.
Csoporttagság hozzárendelése keyed_groups
A kulcsos csoportok ugyanúgy rendelik hozzá a csoporttagságokat, mint a feltételes csoportok, de kulcsos csoport használatakor a csoport neve is dinamikusan ki van töltve.
Adja hozzá a következő keyed_group a myazure_rm.yml
dinamikus készlethez:
plugin: azure_rm
include_vm_resource_groups:
- ansible-inventory-test-rg
auth_source: auto
conditional_groups:
linux: "'CentOS' in image.offer"
windows: "'WindowsServer' in image.offer"
keyed_groups:
- key: tags.applicationRole
Futtassa a ansible-inventory
--graph
következő lehetőséget:
ansible-inventory -i myazure_rm.yml --graph
@all:
|--@_message_broker:
| |--linux-vm_cdb4
|--@_web_server:
| |--win-vm_3211
|--@linux:
| |--linux-vm_cdb4
|--@ungrouped:
|--@windows:
| |--win-vm_3211
A kimenetben két további csoport _message_broker
_web_server
és . Egy kulcsos csoport használatával a címke kitöltötte a applicationRole
csoportneveket és a csoporttagságokat.
Kulcspont:
- Alapértelmezés szerint a kulcsos csoportok elválasztójelet tartalmaznak. Az elválasztó elem eltávolításához adja hozzá
separator: ""
a kulcstulajdonság alatt.
Forgatókönyvek futtatása csoportnévmintákkal
A dinamikus leltár által létrehozott csoportokkal alcsoportokat célozhat meg.
Hozzon létre egy forgatókönyvet
win_ping.yml
a következő tartalommal:--- - hosts: windows gather_facts: false vars_prompt: - name: username prompt: "Enter local username" private: false - name: password prompt: "Enter password" vars: ansible_user: "{{ username }}" ansible_password: "{{ password }}" ansible_connection: winrm ansible_winrm_transport: ntlm ansible_winrm_server_cert_validation: ignore tasks: - name: run win_ping win_ping:
Futtassa a
win_ping.yml
forgatókönyvet.ansible-playbook win_ping.yml -i myazure_rm.yml
Amikor a rendszer kéri, adja meg és
username
password
adja meg az Azure Windows rendszerű virtuális gépet.Enter local username: azureuser Enter password: PLAY [windows] ************************************************************************************************************************************** TASK [run win_ping] ********************************************************************************************************************************* ok: [win-vm_3211] PLAY RECAP ****************************************************************************************************************************************** win-vm_3211 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Fontos
Ha a hibaüzenet
winrm or requests is not installed: No module named 'winrm'
jelenik meg, telepítse a pywinrmot a következő paranccsal:pip install "pywinrm>=0.3.0"
Hozzon létre egy második forgatókönyvet
ping.yml
a következő tartalommal:--- - hosts: all gather_facts: false vars_prompt: - name: username prompt: "Enter ssh user" - name: password prompt: "Enter password for ssh user" vars: ansible_user: "{{ username }}" ansible_password: "{{ password }}" ansible_ssh_common_args: '-o StrictHostKeyChecking=no' tasks: - name: run ping ping:
Futtassa a
ping.yml
forgatókönyvet.ansible-playbook ping.yml -i myazure_rm.yml
Amikor a rendszer kéri, adja meg és
username
password
adja meg az Azure Linux rendszerű virtuális gépet.Enter ssh username: azureuser Enter password for ssh user: PLAY [linux] ******************************************************************************************************* TASK [run ping] **************************************************************************************************** ok: [linux-vm_cdb4] PLAY RECAP ********************************************************************************************************* linux-vm_cdb4 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Az erőforrások eltávolítása
Az erőforráscsoport törléséhez futtassa az az csoporttörlés parancsot. Az erőforráscsoporton belüli összes erőforrás törlődik.
az group delete --name <resource_group>
Ellenőrizze, hogy az erőforráscsoport törölve lett-e az az csoportbemutató használatával.
az group show --name <resource_group>
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: