Ansible динамическая инвентаризация не работает для Azure Cloud

Я пытаюсь поиграть с динамической инвентаризацией Ansible, чтобы установить программное обеспечение/выполнить управление конфигурацией.

Я выполнил инструкции Microsoft здесь: https://docs.microsoft.com/en-us/azure/ansible/ansible-manage-azure-dynamic-inventories

Команды с моей виртуальной машины здесь:

az group create --resource-group ansible-inventory-test-rg --location eastus
az vm create --resource-group ansible-inventory-test-rg              --name ansible-inventory-test-vm1              --image UbuntuLTS --generate-ssh-keys
az vm create --resource-group ansible-inventory-test-rg              --name ansible-inventory-test-vm2              --image UbuntuLTS --generate-ssh-keys
az account show
az resource tag --tags nginx --id /subscriptions/<Subscription ID>/resourceGroups/ansible-inventory-test-rg/providers/Microsoft.Compute/virtualMachines/ansible-inventory-test-vm1
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py
chmod +x azure_rm.py
ansible -i azure_rm.py ansible-inventory-test-rg -m ping

Однако он выдает ошибку, как показано ниже:

[WARNING]:  * Failed to parse /media/sf_C_DRIVE/OnlyOnMyPC/ansible.rhel75.master/azure_rm.py with script plugin: Inventory script
(/media/sf_C_DRIVE/OnlyOnMyPC/ansible.rhel75.master/azure_rm.py) had an execution error: /usr/lib/python2.7/site-packages/requests/__init__.py:91:
RequestsDependencyWarning: urllib3 (1.24.1) or chardet (2.2.1) doesn't match a supported version!   RequestsDependencyWarning) 'Cloud' object has no attribute 'find'

 [WARNING]:  * Failed to parse /media/sf_C_DRIVE/OnlyOnMyPC/ansible.rhel75.master/azure_rm.py with ini plugin:
/media/sf_C_DRIVE/OnlyOnMyPC/ansible.rhel75.master/azure_rm.py:22: Error parsing host definition ''''': No closing quotation

 [WARNING]: Unable to parse /media/sf_C_DRIVE/OnlyOnMyPC/ansible.rhel75.master/azure_rm.py as an inventory source

 [WARNING]: No inventory was parsed, only implicit localhost is available

 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

 [WARNING]: Could not match supplied host pattern, ignoring: ansible-inventory-test-rg

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

Я не могу понять, какая здесь отсутствует ссылка, поскольку я выполнил ее, поскольку это документ с сайта Microsoft, я что-то здесь упустил?

Кроме того, как этот скрипт Python узнает, какая подписка, какая группа ресурсов и какие виртуальные машины должны применяться к конкретному плейбуку?


person learner    schedule 24.02.2019    source источник
comment
похоже, что у вас есть опечатки где-то в файлах и\или этот файл устарел. поделиться обоими файлами?   -  person 4c74356b41    schedule 24.02.2019
comment
Я ничего не изменил в загруженном файле (wget). wget raw.githubusercontent.com/ansible/ansible/devel/contrib /   -  person learner    schedule 24.02.2019
comment
В документации написано использовать как есть. В нем не упоминается, должны ли мы указывать имя группы ресурсов, подписку, имена виртуальных машин и т. д.   -  person learner    schedule 24.02.2019
comment
Является ли ваш media/sf_C_DRIVE/OnlyOnMyPC/ansible.rhel75.master/azure_rm.py диском Windows? Откуда вы запускаете свой питон? Вы установили ansible[azure] с помощью pip? потому что кажется, что вы работаете из Virtualbox, а инструкции явно указывают на Cloud Shell. Кроме того, есть и другие инструкции: docs .microsoft.com/en-us/azure/virtual-machines/linux/   -  person imjoseangel    schedule 24.02.2019
comment
ну, это могло быть устаревшим, на вашем месте я бы, наверное, прошел скрипт с помощью pdb или чего-то еще   -  person 4c74356b41    schedule 24.02.2019
comment
/media/sf_C_DRive монтируется из Windows на виртуальную машину Virtualbox. Моя виртуальная машина — CentOS 7.6. Приведенные ниже инструкции предназначены для подготовки виртуальной машины с помощью Ansible, я сделал это. Теперь моя цель — создать канал CICD для обеспечения инфраструктуры. docs.microsoft.com/en-us/ azure/виртуальные машины/linux/   -  person learner    schedule 24.02.2019
comment
@ 4c74356b41 Существует только один файл Python. Что такое пдб?   -  person learner    schedule 24.02.2019
comment
отладчик питона   -  person 4c74356b41    schedule 24.02.2019
comment
На облачной оболочке тоже не работает, за исключением того, что не выдает никаких ошибок в отличие от ВМ.   -  person learner    schedule 24.02.2019
comment
ansible -i azure_rm.py ansible-inventory-test-rg -m ping [ПРЕДУПРЕЖДЕНИЕ]: не удалось сопоставить предоставленный шаблон хоста, игнорируя: ansible-inventory-test-rg [ПРЕДУПРЕЖДЕНИЕ]: нет соответствующих хостов, ничего не нужно делать   -  person learner    schedule 24.02.2019


Ответы (1)


У меня это работает, может быть, есть другой лучший ответ, чем мой, но это заставило его работать.

export AZURE_CLIENT_ID="xxxxxxxxxxxxxxxxxxxxx"
export AZURE_SECRET="xxxxxxxxxxxxxxxxxxxxxxxx"
export AZURE_SUBSCRIPTION_ID="xxxxxxxxxxxxxxx"
export AZURE_TENANT="xxxxxxxxxxxxxxxxxxxxxxxx"

Вот и все.

person learner    schedule 24.02.2019