Udostępnij za pośrednictwem


Szybki start: tworzenie jednostki usługi platformy Azure dla rozwiązania Ansible

W tym przewodniku Szybki start utworzysz jednostkę usługi platformy Azure przy użyciu biblioteki AzureCLI lub programu Azure PowerShell i uwierzytelnisz się na platformie Azure z poziomu rozwiązania Ansible.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Tworzenie jednostki usługi platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure
  • Tworzenie jednostki usługi platformy Azure przy użyciu programu Azure PowerShell
  • Przypisywanie roli do jednostki usługi platformy Azure
  • Uzyskiwanie kluczowych informacji z jednostki usługi
  • Ustaw zmienne środowiskowe, aby usługa Ansible mogła pobrać wartości jednostki usługi
  • Testowanie jednostki usługi

Wymagania wstępne

  • Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Tworzenie jednostki usługi platformy Azure

Jednostka usługi platformy Azure zapewnia dedykowane konto do zarządzania zasobami platformy Azure za pomocą rozwiązania Ansible.

Uruchom następujący kod, aby utworzyć jednostkę usługi platformy Azure:

az ad sp create-for-rbac --name ansible \
            --role Contributor \
            --scopes /subscriptions/<subscription_id>

Uwaga

Zapisz hasło z danych wyjściowych w bezpiecznej lokalizacji.

Przypisywanie roli do jednostki usługi platformy Azure

Domyślnie jednostki usługi nie mają dostępu niezbędnego do zarządzania zasobami na platformie Azure.

Uruchom następujące polecenie, aby przypisać rolę Współautor do jednostki usługi:

az role assignment create --assignee <appID> \
    --role Contributor \
    --scope /subscriptions/<subscription_id>

Zastąp <appID> element wartością podaną z danych wyjściowych az ad sp create-for-rba polecenia .

Uwaga

Aby zwiększyć bezpieczeństwo, zmień zakres przypisania roli do grupy zasobów zamiast subskrypcji.

Uzyskiwanie informacji o jednostce usługi platformy Azure

Aby uwierzytelnić się na platformie Azure przy użyciu jednostki usługi, potrzebne są następujące informacje:

  • SubscriptionID
  • Identyfikator aplikacji jednostki usługi
  • Hasło jednostki usługi
  • TenantID

Uruchom następujące polecenia, aby uzyskać informacje o jednostce usługi:

az account show --query '{tenantId:tenantId,subscriptionid:id}';

az ad sp list --display-name ansible --query '{clientId:[0].appId}'

Uwierzytelnianie na platformie Azure przy użyciu jednostki usługi

Uruchom następujące polecenia, aby wypełnić wymagane zmienne środowiskowe na serwerze Ansible:

export AZURE_SUBSCRIPTION_ID=<SubscriptionID>
export AZURE_CLIENT_ID=<ApplicationId>
export AZURE_SECRET=<Password>
export AZURE_TENANT=<TenantID>

Zastąp <SubscriptionID>wartości , <ApplicationId>, <Password>i <TenantID> wartościami konta jednostki usługi.

Testowanie uprawnień jednostki usługi

Uruchom następujące polecenie, aby utworzyć nową grupę zasobów platformy Azure:

ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> location=<resource_group_location>"

Zastąp <resource_group_name> wartości i <resource_group_location> nowymi wartościami grupy zasobów.

[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
    "changed": true,
    "contains_resources": false,
    "state": {
        "id": "/subscriptions/<subscriptionID>/resourceGroups/azcli-test",
        "location": "eastus",
        "name": "azcli-test",
        "provisioning_state": "Succeeded",
        "tags": null
    }
}

Uruchom następujące polecenie, aby usunąć grupę zasobów platformy Azure:

ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> state=absent force_delete_nonempty=yes"

Zastąp <resource_group_name> ciąg nazwą grupy zasobów.

[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
    "changed": true,
    "contains_resources": false,
    "state": {
        "id": "/subscriptions/subscriptionID>/resourceGroups/azcli-test",
        "location": "eastus",
        "name": "azcli-test",
        "provisioning_state": "Succeeded",
        "status": "Deleted",
        "tags": null
    }
}

Następne kroki