在 azure vm 上运行 ansible 的库错误

Posted

技术标签:

【中文标题】在 azure vm 上运行 ansible 的库错误【英文标题】:Library errors running ansible on azure vm 【发布时间】:2019-10-26 08:02:26 【问题描述】:

在 Azure 上运行 ansible 时模块未加载错误。

尝试在 Azure 上安装 ansible 并运行一些测试代码

尝试在 Azure VM 上测试一些安装 ansible 的部署。 --在VM中安装了以下软件包 --Azure 特定 --安装 azure python SDK 模块的软件包

sudo apt-get update && sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip

--安装ansible包

sudo pip install ansible[azure]
sudo pip install msrestazure
sudo pip install msrest

尝试创建资源组时,出现库未加载错误

---
- hosts: localhost
  connection: local
  tasks:
    - name: Create resource group
      azure_rm_resourcegroup:
        name: ansible-rg
        location: centralus
      register: rg
    - debug:
        var: rg

得到错误,

TASK [创建资源组] ****************************************************** ****************************************************** ********* 任务执行过程中出现异常。看到完整的 回溯,使用 -vvv。错误是:ImportError: No module named 输入致命:[localhost]:失败! => “改变”:假,“味精”: “无法导入所需的 Python 库 (msrestazure) 的 Python /usr/bin/python。请阅读模块文档和 安装在适当的位置”

播放回顾


创建资源组

【问题讨论】:

【参考方案1】:

一般来说,如果你使用python2并执行命令sudo pip install,那么它会将包安装在路径/usr/local/lib/python2.7/dist-packages中。但是如果你改变了一些环境,你不知道,就会出现一些错误,你也不知道。

所以我建议你使用虚拟环境,它不会影响你的真实环境。所以请按照这里的步骤操作:

sudo apt-get update && sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip
sudo pip install virtualenv
sudo mkdir ansible
sudo virtualenv ansible
cd ansible
source bin/activate

现在虚拟环境已经准备好了,你可以在里面安装ansible了。

sudo pip install ansible[azure]

然后使用您的服务主体在路径 ~/.azure/ 中创建凭据文件。当您安装ansible[azure] 时,msrestmsrestazure 包已经安装。因此,您无需再次安装它们。然后您可以尝试再次创建资源组。

【讨论】:

我最终创建了一个 ansible 脚本来安装气流。 #这个脚本要安装 Python3-pip 和 Ansible #!/bin/bash sudo apt -y update sudo apt -y install python3-pip sudo -H pip3 install --upgrade pip #Installing Ansible sudo pip3 install ansible sudo easy_install -U cffi sudo easy_install -U cryptography 卸载用pip安装的ansible,用pip3替换上面的改动

以上是关于在 azure vm 上运行 ansible 的库错误的主要内容,如果未能解决你的问题,请参考以下文章

仅具有私有 IP 的 Azure VM 的 Ansible 动态清单

在 Ansible 中获取 Azure 规模集 VM 的专用 IP

Azure 中没有用于 Ansible VM 预配的名为 packaging.version 的模块

尝试为 Azure 使用 Ansible 动态清单插件时出错

xSCOM 1.3.3.0 在 Azure VM 上运行 DSC 时引发异常

如何在azure VM上公开HTTP端口[关闭]