在Windows上安装Ansible Python软件包

时间:2018-07-04 06:29:04

标签: python pip ansible

我正在努力在Windows 10计算机上安装Ansible Python软件包。

我不需要Ansible在我的计算机上运行,​​这纯粹是出于Windows主机上的开发目的。所有命令稍后将在Linux机器上发出。

运行后:

pip install ansible

我收到以下异常:

  

命令“ c:\ users \ evaldas.buinauskas \ appdata \ local \ programs \ python \ python37-32 \ python.exe -u -c”导入设置工具,标记化; __ file __ ='C:\ Users \ evaldas.buinauskas \ AppData \ Local \ Temp \ pip-install-hpay_le9 \ ansible \ setup.py'; f = getattr(tokenize,'open',open)(__ file __); code = f.read()。replace('\ r \ n','\ n'); f.close(); exec(compile(code,__file__,'exec'))“ install --record C:\ Users \ evaldas.buinauskas \ AppData \ Local \ Temp \ pip- record-dvfgngpp \ install-record.txt --single-version-externally-managed --compile“在C:\ Users \ evaldas.buinauskas \ AppData \ Local \ Temp \ pip-install-hpay_le9 \ ansible中失败,错误代码为1 \

还有一个重复的例外,我认为这是根本原因:

  

错误:无法复制'lib \ ansible \ module_utils \ ansible_release.py':不存在或不是常规文件

This GitHub issue说应该可以安装而不运行它。基本上这就是我真正需要的。

我尝试以管理员身份运行CMD / PowerShell / Cygwin,但没有帮助。

还有一个答案,告诉您如何在Windows上安装它:How to overcome - pip install ansible on windows failing with filename or extension too long on windows

但是我不太了解如何为Ansible软件包获取wheel文件。

5 个答案:

答案 0 :(得分:9)

在Windows上安装Ansible很麻烦。我的建议不是如何在Windows上安装Ansible的直接解决方案,而是一种解决方法。

我将带Ansible的Docker容器用于在Windows机器上开发剧本。您需要在计算机上使用Docker for Windows

这是Dockerfile:

FROM alpine:3.7

ENV ANSIBLE_VERSION=2.5.4

ENV BUILD_PACKAGES \
        bash \
        curl \
        tar \
        nano \
        openssh-client \
        sshpass \
        git \
        python \
        py-boto \
        py-dateutil \
        py-httplib2 \
        py-jinja2 \
        py-paramiko \
        py-pip \
        py-setuptools \
        py-yaml \
        ca-certificates

RUN apk --update add --virtual build-dependencies \
        gcc \
        musl-dev \
        libffi-dev \
        openssl-dev \
        python-dev && \
    set -x && \
    apk update && apk upgrade && \
    apk add --no-cache ${BUILD_PACKAGES} && \
    pip install --upgrade pip && \
    pip install python-keyczar docker-py boto3 botocore && \
    apk del build-dependencies && \
    rm -rf /var/cache/apk/* && \
    mkdir -p /etc/ansible/ /ansible && \
    echo "[local]" >> /etc/ansible/hosts && \
    echo "localhost" >> /etc/ansible/hosts && \
    curl -fsSL https://releases.ansible.com/ansible/ansible-${ANSIBLE_VERSION}.tar.gz -o ansible.tar.gz && \
    tar -xzf ansible.tar.gz -C /ansible --strip-components 1 && \
    rm -fr ansible.tar.gz /ansible/docs /ansible/examples /ansible/packaging

ENV ANSIBLE_GATHERING=smart \
    ANSIBLE_HOST_KEY_CHECKING=false \
    ANSIBLE_RETRY_FILES_ENABLED=false \
    ANSIBLE_ROLES_PATH=/ansible/playbooks/roles \
    ANSIBLE_SSH_PIPELINING=True \
    PYTHONPATH=/ansible/lib \
    PATH=/ansible/bin:$PATH \
    ANSIBLE_LIBRARY=/ansible/library \
    EDITOR=nano

WORKDIR /ansible/playbooks

ENTRYPOINT ["ansible-playbook"]

使用docker build命令构建docker容器。然后,您可以创建一个小的bash脚本,该脚本执行docker run命令并将当前目录安装到容器中。您可以将其称为ansible-playbook.sh

winpty docker run --rm -it -v /$(pwd):/ansible/playbooks <name of your container> $@

现在,您可以使用GIT BASH中的./ansible-playbook.sh <your playbook>启动Ansible剧本。如果您想在PowerShell中运行此程序,则可能需要删除winpty命令,但是我尚未在PS中对此进行测试。

这不是最好的解决方案,但可以完成工作。希望它也对您有帮助。

答案 1 :(得分:4)

我已通过以下步骤(在powershell中运行)在Windows 10上成功安装了ansible:

  • 克隆ansible存储库,例如到 ansible 文件夹
  • pip3安装 -e 。\ ansible \

您可能还需要建立一个符号链接,例如 New-Item -ItemType SymbolicLink -Name ansible_release.py -Target。\ lib \ ansible \ release.py -但不应我认为有必要。

该ansible仍将无法用于开发,因为它使用了某些 grp 或 pwd 这样的unix-only模块,因此例如,您将无法运行单元测试(例如 module_utils / basic.py 导入grp和pwd)。将grp.py下载到 site-packages 文件夹无济于事。

我建议安装WSL(Linux的Windows子系统)以及使用pip安装python,然后运行 pip install ansible 。使用WSL在Visual Studio Code中进行开发的方法如下:https://daverupert.com/2018/04/developing-on-windows-with-wsl-and-visual-studio-code/

答案 2 :(得分:2)

另一种方法是从商店中安装Ubuntu 18.04应用程序,如果可用,则安装最新版本,然后以linux方式完成所有操作。

当然,如果您需要使用Ansible命令控制器计算机,这肯定会带给您一些窍门

答案 3 :(得分:1)

我有一个类似的要求-将Ansible安装为合法的Python库,以便我可以在Windows开发环境中引用它并浏览源代码(不要在Windows上运行 run )。我通过执行以下操作使其部分安装(有些故障,但不足以停止安装):

  1. 从github下载最新的 zip 版本(例如https://github.com/ansible/ansible/archive/v2.9.2.zip)。请注意,必须是zip版本,因为tar.gz中包含符号链接。
  2. 解压缩到(例如)<app-button>
  3. 通过更改C:\Temp\ansible-2.9.2以从setup.py立即返回来删除符号链接依赖性:
    _maintain_symlinks
  4. cd def _maintain_symlinks(symlink_type, base_path): return
  5. C:\Temp\ansible-2.9.2

答案 4 :(得分:1)

感谢@Kevin C的提示,现在就尝试...

正如您所写,“ Windows下的pip”解决方案正在工作 ... ...在某种程度上是无用的,因为ansible确实需要在linux环境中执行完全按设计工作。 要尝试通过MS Store安装python 3.8,例如并从here

点安装克隆的git repo

如您所建议的那样,可以使用适用于Linux的Windows子系统(WSL)。

见下文我的

  • 摘要和
  • 演练

摘要

可以在没有Docker容器的情况下在Win10上安装ansible,您必须自行决定它是否适合您的目的。设置时间非常合理,例如集成到Visual Studio代码中是为了在本地测试Ansible开发(例如,ansible-lint或ansible-playbook --syntax-check)。另外,其他命令(如ansible-galaxy和ansible-inventory命令也可以按预期工作,完成了基本测试...

演练

您可能要确保您正在运行最新的Windows 10版本;在撰写本文时,我正在使用Windows 10专业版2004年。WSL2可用于该Windows版本。

WSL2安装

通过admin powershell as per MS instructions

dism.exe / online /启用功能/功能名称:Microsoft-Windows-Subsystem-Linux / all / norestart

dism.exe /在线/启用功能/功能名称:VirtualMachinePlatform / all / norestart

wsl --set-default-version 2

如果最后一条命令告诉您,您可能仍然必须更新wsl内核映像,因此,如果看到以下消息,请遵循wsl2kernel update guide that is shown there

WSL 2需要对其内核组件进行更新。有关信息,请访问https://aka.ms/wsl2kernel

...安装之后,以上消息将不再显示。

在撰写本文时,安装任何Linux“发行版” from the Microsoft store directly via powershell is not possible

但是,您可以进入商店以仅显示Linux using this link

因此您可以安装例如来自MS Store的Ubuntu或Debian,并通过添加到您的开始菜单中的shell启动器应用程序继续使用through the Windows Terminal。最初,您仍然必须进行用户设置。

最后:安装ansible

因此,在进行可能需要5分钟的初始配置(下载时间可能有很大不同)之后,您已经有了Windows下的Linux shell。 与所有常见的Ubuntu或Debian一样,现在您可以使用

轻松安装ansible

sudo apt install ansible

应该安装ansible的最新版本(ansible版本为2.9.12 @ 2020-08)。

应该是这样。

(可选)如果您还想使用Visual Studio代码:

Visual Studio代码配置

要将此设置与VS Code一起使用,请下载here并安装(...在Windows 10中,而不是在Debian / WSL中)(...您也可以在该安装中使用Chocolatey,但通常是VS代码默认情况下会随时更新自身。)

根据最初链接的文章VS code & WSL“配置VS代码以使用Bash”

在那里有2个改进:

  • 当前的设置(Win 10 2004,64位,日期2020-08)位于:

文件->首选项->设置 或直接通过按键访问 [CTRL] + [,]

  • 启动bash的完整路径也有所改变:

“ terminal.integrated.shell.windows”:“ C:\ Windows \ System32 \ bash.exe”

仍然,您必须按照原始VS code & WSL文章(在WSL中的安装位置)熟悉自己的内容-您需要找到合适的项目位置才能继续...

此外,您可能想要安装那里提到的git。另外,VS代码扩展that the ansible project recommends可能派上用场。有关基本“ ansible”扩展的功能介绍,请参见here

愉快的编码和测试(使用VS Code)!