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-beli virtuális gépek létrehozása

  1. Jelentkezzen be az Azure Portalra.

  2. Nyissa meg a Cloud Shellt.

  3. 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
    
  4. 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:

  1. 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 rendelkeznie ymlyaml.
  2. 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
    
  3. 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.

  1. 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:
    
  2. 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 usernamepassword 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"

  3. 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:
    
  4. Futtassa a ping.yml forgatókönyvet.

    ansible-playbook ping.yml -i myazure_rm.yml
    

    Amikor a rendszer kéri, adja meg és usernamepassword 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

  1. 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>
    
  2. 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