【问题标题】:Installing Azure support for Ansible为 Ansible 安装 Azure 支持
【发布时间】:2017-03-02 17:11:10
【问题描述】:

我正在尝试让 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 运行 playbook 时,返回以下错误:

致命:[本地主机]:失败! => {“改变”:假,“失败”:真, “调用”:{“module_args”:{“ad_user”:null,“append_tags”:true, “client_id”:null,“force”:false,“location”:null,“name”:“test”, “密码”:空,“配置文件”:空,“秘密”:空,“状态”:“现在”, “subscription_id”:null,“tags”:null,“tenant”:null},“module_name”: "azure_rm_resourcegroup"}, "msg": "你有 azure==2.0.0rc5 安装?试试pip install azure==2.0.0rc5- 没有名为 enum 的模块"}

【问题讨论】:

    标签: azure ansible python-packaging


    【解决方案1】:

    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 指定所有库的版本,因此如果您升级集合版本,最好重新安装它们
    • 考虑将其签入以“固定”版本的依赖项
    • 您可能还想固定收藏版本

    作为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 项目将 Azure 支持所需的 exact dependency versions(截至 2.9.9)定义为 Python 打包设置中的“额外”。

    【讨论】:

      【解决方案2】:

      此错误消息中的 Ansible 建议确实令人困惑。通常除了azure==2.0.0rc5之外还需要添加几个包。

      注意消息下面部分给出的包名:

      没有名为enum的模块

      所以在这种情况下尝试:

      sudo pip install enum
      

      要检查的一件事是:Ubuntu 16.04, Python 2.7 - ImportError: No module named enum 我不确定它是否适用于这种情况,它看起来像 16.04 问题。我确实默认安装了enum

      根据我的经验,您还需要:

      sudo pip install msrest
      sudo pip install msrestazure
      

      【讨论】:

      • 这似乎已经为我解决了这个问题,但我认为需要进行更多配置\设置才能让两者进行通信。当我运行 playbook 时,我从 Azure 得到一个无效的用户名密码
      • 这对于 Ansible 3.0+ / ansible-core 2.10+ 已经过时了
      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多