安装 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'。