【问题标题】:Install Ansible on OSX在 OSX 上安装 Ansible
【发布时间】:2017-05-11 00:47:45
【问题描述】:

我正在使用OSX.10.12.4

我从 github 下载了 ansible 并尝试运行它。 这是我在执行 ansible 时得到的。

$> ansible
ERROR! Unexpected Exception: 'module' object has no attribute '_vendor'
the full traceback was:

Traceback (most recent call last):
  File "/Users/juneyoungoh/Documents/DEV_TEST/ansible/ansible/bin/ansible", line 88, in <module>
    mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
  File "/Users/juneyoungoh/Documents/DEV_TEST/ansible/ansible/lib/ansible/cli/__init__.py", line 28, in <module>
    import yaml
  File "build/bdist.macosx-10.12-intel/egg/yaml/__init__.py", line 14, in <module>
  File "build/bdist.macosx-10.12-intel/egg/yaml/cyaml.py", line 5, in <module>
  File "build/bdist.macosx-10.12-intel/egg/_yaml.py", line 7, in <module>
  File "build/bdist.macosx-10.12-intel/egg/_yaml.py", line 3, in __bootstrap__
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 90, in <module>
    packaging = pkg_resources._vendor.packaging
AttributeError: 'module' object has no attribute '_vendor'

我在本地有 2 个版本的 python(2.7.103.6.1)。这可能是导致此错误的原因吗?我应该怎么做才能解决这个问题?

  • 我确实想用二进制源安装它,而不是用brew install ansiblepip install ansible

谢谢。

【问题讨论】:

    标签: macos python-2.7 python-3.x ansible


    【解决方案1】:

    您可能因为某些依赖性而失败了。 Ansible 提供了一个 requirements.txt,您应该将其与 pip install -r 一起使用。

    它对我有用:

    cd /tmp
    git clone https://github.com/ansible/ansible.git
    cd ansible
    pip install -r requirements.txt
    python setup.py install
    

    还有证明:

    $ ansible --version
    ansible 2.4.0
      config file = 
      configured module search path = [u'/Users/amadeu/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/local/lib/python2.7/site-packages/ansible-2.4.0-py2.7.egg/ansible
      executable location = /usr/local/bin/ansible
      python version = 2.7.13 (default, Dec 17 2016, 23:03:43) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
    

    【讨论】:

      【解决方案2】:

      另一种方法,我用下面的方法解决了。

      1. 安装python3,以便使用pip3
      2. sudo pip3 install pyyaml
      3. sudo pip3 install ansible
      4. sudo pip3 install ansible --upgrade

      当你输入pip时,它将使用原系统python。(在我的情况下可能是2.7.0

      【讨论】:

        【解决方案3】:

        在 mac OSX 中安装 ansible,推荐使用 pip。

        首先你需要使用命令安装 pip

        sudo easy_install pip
        

        sudo python -m ensure pip   //(installing pip via python)
        

        然后用

        安装ansible
        sudo pip install ansible
        

        完成后可以用检查ansible的版本

        ansible —version
        

        现在 Ansible 安装成功。现在要与客户端计算机通信,需要 SSH 身份验证。我假设已设置 SSH。

        现在 ansible 将查找包含所有客户端 IP 的主机文件。转到 /etc/ansible/ 路径。如果路径不存在,转到 /etc 并创建名为“ansible”的目录 sudo mkdir ansible

        cd 进入并创建主机文件。

        cd ansible
        sudo vi hosts
        

        像这样编辑你的主机文件。

        [clients]
        10.20.200.211           //Replace with your client’s ip address
        

        现在尝试 ping 所有客户端

        ansible all -m ping
        

        预期的输出是这样的。

        10.20.200.211 | SUCCESS => {
            "changed": false, 
            "ping": "pong"
        }
        

        现在您可以创建和使用 playbook 文件了 :)

        【讨论】:

          【解决方案4】:

          只需 3 步即可在 mac os x 11 上安装 ansible

           pip3 install ansible
          
           sudo mkdir -p /etc/ansible
          
           sudo nano /etc/ansible/hosts
          

          将服务器 ip 添加到 hosts 文件中

          [网络]

          198.20.200.211 //替换成你客户端的ip地址

          检查连接状态

          ansible all -m ping
          

          【讨论】:

            猜你喜欢
            • 2016-08-25
            • 2013-10-25
            • 2015-01-27
            • 2016-01-18
            • 2014-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-19
            相关资源
            最近更新 更多