Ansible Поиск с помощью azure_keyvault_secret Неверные учетные данные - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь восстановить секрет, хранящийся в Azure хранилище ключей с помощью Ansible. Я нашел и установил azure .azure_preview_modules , используя ansible -galaxy. Я также обновил ansible .cfg, чтобы он указывал на каталог lookup_plugins из роли. При запуске следующей книги воспроизведения я получаю сообщение об ошибке:


- hosts: localhost
  connection: local
  roles:
    - { role: azure.azure_preview_modules }
  tasks:
    - name: Look up secret when ansible host is general VM
      vars:
        url: 'https://myVault.vault.azure.net/'
        secretname: 'SecretPassword'
        client_id: 'ServicePrincipalIDHere'
        secret: 'ServicePrinipcalPassHere'
        tenant: 'TenantIDHere'
      debug: msg="the value of this secret is {{lookup('azure_keyvault_secret',secretname,vault_url=url, cliend_id=client_id, secret=secret, tenant_id=tenant)}}"


fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'azure_keyvault_secret'. Error was a <class 'ansible.errors.AnsibleError'>, original message: Invalid credentials provided."}

Используя ту же информацию, я могу подключиться к Azure с помощью AZ PowerShell и AZCLI и получить секретные ключи Azure Key Vault в командной строке , Однако те же учетные данные не работают в рамках этой задачи для книги воспроизведения с использованием подключаемого модуля поиска.

Ответы [ 2 ]

1 голос
/ 29 января 2020

У меня была похожая ошибка при использовании python sdk (поверх которого построено ansible). Попробуйте изменить URL-адрес на это:

url: 'https://myVault.vault.azure.net' # so remove the trailing slash

текст ошибки на 101% вводит в заблуждение

0 голосов
/ 30 января 2020

После долгих трудов я разобрался в проблеме! Аргумент client_id написан с ошибкой в ​​примере, и я не уловил его, что привело к ошибке. cliend_id = client_id,

https://github.com/Azure/azure_preview_modules/blob/master/lookup_plugins/azure_keyvault_secret.py#L49

Исправленный пример ниже.

- name: Look up secret when ansible host is general VM
  vars:
    url: 'https://valueName.vault.azure.net'
    secretname: 'secretName/version'
    client_id: 'ServicePrincipalID'
    secret: 'P@ssw0rd'
    tenant: 'tenantID'
  debug: msg="the value of this secret is {{lookup('azure_keyvault_secret',secretname,vault_url=url, client_id=client_id, secret=secret, tenant_id=tenant)}}"
...