安装 Azure 对 Ansible 的支持
Installing Azure support for Ansible
我正在尝试让 Ansible 将资源部署到 Azure 云,但我在让它工作时遇到错误。我全新安装了 Ubuntu 14.04
我已经通过 运行 安装了 ansible:
- sudo apt-get install software-properties-common
- sudo apt-add-repository ppa:ansible/ansible
- sudo apt-get update
- sudo apt-get install ansible
我还通过 运行 命令安装了 pip
- sudo easy_install pip
所有这些都已完成,以便在服务器上安装 ansible。然后我按照 here.
给出的说明开始使用 Ansible 的 Azure 组件
我 运行 命令 sudo pip install "azure==2.0.0rc5"
获取 Azure Python SDK。然后我创建了一个简单的 yaml 文件来创建资源组,当我通过 运行 命令 ansible-playbook test.yml -vvv
运行 剧本时,返回了以下错误:
fatal: [localhost]: FAILED! => {"changed": false, "failed": true,
"invocation": {"module_args": {"ad_user": null, "append_tags": true,
"client_id": null, "force": false, "location": null, "name": "test",
"password": null, "profile": null, "secret": null, "state": "present",
"subscription_id": null, "tags": null, "tenant": null}, "module_name":
"azure_rm_resourcegroup"}, "msg": "Do you have azure==2.0.0rc5
installed? Try pip install azure==2.0.0rc5
- No module named enum"}
此错误消息中的 Ansible 建议确实令人困惑。通常除了 azure==2.0.0rc5
.
还需要添加几个包
注意消息后面部分给出的包名:
No module named enum
所以在这种情况下尝试:
sudo pip install enum
要检查的一件事是: 我不确定它是否适用于这种情况,看起来像是 16.04 问题。我确实默认安装了 enum
。
根据我的经验,您还需要:
sudo pip install msrest
sudo pip install msrestazure
Ansible 3.0+ / ansible-core 2.10+ 的新答案:
要安装 Azure 支持,请使用 Ansible Azure collection 如下:
# Install dependencies
curl -O https://raw.githubusercontent.com/ansible-collections/azure/dev/requirements-azure.txt
pip install -r requirements-azure.txt
# Install collection
ansible-galaxy collection install azure.azcollection
- requirements-azure.txt指定所有库的版本,所以如果你升级合集版本最好重新安装这些
- 考虑将其签入 'pin' 版本的依赖项
- 您可能还想固定合集版本
作为 Ansible collection,此 Ansible Azure 支持现在可以在 Ansible 核心发布过程之外更快速地更新。
针对 ansible-core 2.10+ 进行了更新,它包含在 Ansible 3.0 及更高版本中。
原始答案 达到 Ansible 2.9:
为 Ansible 安装 Azure 包的最简单和最可靠的方法是:
pip install ansible[azure]==2.8.6
这将安装此 Ansible 版本所需的 Azure 依赖项。如果要使用最新版本,请省略 ==2.8.6
部分。
之所以可行,是因为 Ansible 项目在其 Python 打包设置中将 Azure 支持所需的 exact dependency versions(截至 2.9.9)定义为 'extra'。
- 如果您有兴趣,Python packaging docs 中有更多相关信息。
我正在尝试让 Ansible 将资源部署到 Azure 云,但我在让它工作时遇到错误。我全新安装了 Ubuntu 14.04
我已经通过 运行 安装了 ansible:
- sudo apt-get install software-properties-common
- sudo apt-add-repository ppa:ansible/ansible
- sudo apt-get update
- sudo apt-get install ansible
我还通过 运行 命令安装了 pip
- sudo easy_install pip
所有这些都已完成,以便在服务器上安装 ansible。然后我按照 here.
给出的说明开始使用 Ansible 的 Azure 组件我 运行 命令 sudo pip install "azure==2.0.0rc5"
获取 Azure Python SDK。然后我创建了一个简单的 yaml 文件来创建资源组,当我通过 运行 命令 ansible-playbook test.yml -vvv
运行 剧本时,返回了以下错误:
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_args": {"ad_user": null, "append_tags": true, "client_id": null, "force": false, "location": null, "name": "test", "password": null, "profile": null, "secret": null, "state": "present", "subscription_id": null, "tags": null, "tenant": null}, "module_name": "azure_rm_resourcegroup"}, "msg": "Do you have azure==2.0.0rc5 installed? Try
pip install azure==2.0.0rc5
- No module named enum"}
此错误消息中的 Ansible 建议确实令人困惑。通常除了 azure==2.0.0rc5
.
注意消息后面部分给出的包名:
No module named enum
所以在这种情况下尝试:
sudo pip install enum
要检查的一件事是:enum
。
根据我的经验,您还需要:
sudo pip install msrest
sudo pip install msrestazure
Ansible 3.0+ / ansible-core 2.10+ 的新答案:
要安装 Azure 支持,请使用 Ansible Azure collection 如下:
# Install dependencies
curl -O https://raw.githubusercontent.com/ansible-collections/azure/dev/requirements-azure.txt
pip install -r requirements-azure.txt
# Install collection
ansible-galaxy collection install azure.azcollection
- requirements-azure.txt指定所有库的版本,所以如果你升级合集版本最好重新安装这些
- 考虑将其签入 'pin' 版本的依赖项
- 您可能还想固定合集版本
作为 Ansible collection,此 Ansible Azure 支持现在可以在 Ansible 核心发布过程之外更快速地更新。
针对 ansible-core 2.10+ 进行了更新,它包含在 Ansible 3.0 及更高版本中。
原始答案 达到 Ansible 2.9:
为 Ansible 安装 Azure 包的最简单和最可靠的方法是:
pip install ansible[azure]==2.8.6
这将安装此 Ansible 版本所需的 Azure 依赖项。如果要使用最新版本,请省略 ==2.8.6
部分。
之所以可行,是因为 Ansible 项目在其 Python 打包设置中将 Azure 支持所需的 exact dependency versions(截至 2.9.9)定义为 'extra'。
- 如果您有兴趣,Python packaging docs 中有更多相关信息。