在 Windows 上安装 Ansible Python 包

新手上路,请多包涵

我正在努力在我的 Windows 10 机器上安装 Ansible Python 包。

我不需要 Ansible 在我的机器上运行,这纯粹是为了在我的 Windows 主机上进行开发。稍后将在 Linux 机器上发出所有命令。

运行后:

 pip install ansible

我得到以下异常:

命令 “c:\users\evaldas.buinauskas\appdata\local\programs\python\python37-32\python.exe -u -c “import setuptools, tokenize;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”:不存在或不是常规文件

这个 GitHub 问题 说安装应该是可能的,而不是运行它。这基本上就是我真正需要的。

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

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

但我真的不明白如何为 Ansible 包获取 wheel 文件。

原文由 Evaldas Buinauskas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

在 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 中测试它。

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

原文由 fgk 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

您可能还需要建立一个符号链接,但是,这不是必需的:

New-Item -ItemType SymbolicLink -Name ansible_release.py -Target .\lib\ansible\release.py

Ansible 对于开发来说有些不可用,因为它使用了一些 Unix-only 模块,比如 grppwd 。例如,您将无法运行单元测试(例如 _moduleutils/basic.py 导入 grp 和 pwd)。将 grp.py 下载到 站点包 文件夹无济于事。

为了获得更流畅的体验,我建议安装 WSL(适用于 Linux 的 Windows 子系统)加上使用 pip 安装 python 并运行 pip install ansible下面介绍如何在 Visual Studio Code 中使用 WSL 进行开发

原文由 Kajsa Gauza 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题