Доступ к учетным данным Azure при доступе к файлу учетных данных и модулю azure_rm_resource - PullRequest
0 голосов
/ 30 августа 2018

Хотя я использую ansible для создания некоторой инфраструктуры в Azure, я пытаюсь получить доступ к subscritpion_id во время ANSIBLE. Я устанавливаю файл учетных данных, следуя путеводитель по лазурной документации от 10000 *https://docs.ansible.com/ansible/2.6/scenario_guides/guide_azure.html

Когда я запускаю ansible playbook, я добавляю следующий аргумент -e ANSIBLE_PROFILE="new-env", который делает то, что ему нужно, и предоставляет надлежащие учетные данные для запуска для правильного выполнения модуля.

Но я пытаюсь использовать API-интерфейс REST Azure через модуль azure_rm_resource и хочу отправить представление JSON в теле запроса, которое будет включать subscription_id для форматирования идентификатора ресурса в Azure. https://docs.ansible.com/ansible/2.6/modules/azure_rm_resource_module.html

Допустим, идентификатор VNet в Azure выглядит как "id": "/subscriptions/<subscription_id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/my-vnet", Я могу отформатировать имя виртуальной сети, но мне нужно получить информацию об идентификаторе подписки, который читается с помощью ansible из файла ~/.azure/credentials во время запуска playbook.

Как мне получить доступ к этой информации? Есть ли специальная переменная? Я посмотрел на функцию lookup env, а ее нет с переменной AZURE_SUBSCRIPTION_ID.

В фактах я не пытался раскрыть факты, используя следующую команду AZURE_PROFILE="new-env" ansible localhost -m setup

Пример файла учетных данных

    cat ~/.azure/credentials

    [new-env]
    subscription_id=****************************
    client_id=****************************
    secret=****************************
    tenant=****************************

Спасибо

ОБНОВЛЕНИЕ # 1

В итоге я воспользовался поисковой функцией inible.

     "{{ lookup('ini',  'subscription_id section={{ azure_profile }}  file={{ ansible_env.HOME }}/.azure/credentials') }}" 

Это возвращает точное значение, которое я искал, и я использую set_fact, чтобы установить его во время моего отклика.

1 Ответ

0 голосов
/ 30 августа 2018

Используя поиск ini, я ищу прямо в файле учетных данных, а затем устанавливаю его как факт, чтобы использовать его позже.

tasks:

    - name: set fact to reduce the verbosity of the variables
      set_fact:
        azure_profile: "{{ AZURE_PROFILE }}"
        azure_subscription_id: "{{ lookup('ini',  'subscription_id section={{ azure_profile }}  file={{ ansible_env.HOME }}/.azure/credentials') }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...