在Windows上安装Ansible Python包

Eva*_*kas 16 python pip ansible

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

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

运行后:

pip install ansible
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

命令"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-external-managed --compile"失败,错误代码1在C:\ Users\evaldas.buinauskas\AppData\Local\Temp\pip-install-hpay_le9\ansible \

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

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

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

我试图运行CMD/PowerShell中/ Cygwin的作为管理员,并没有帮助.

此外,还有一个答案告诉如何在Windows上安装它:如何克服 - 在windows上使用文件名或扩展名失败的pip install ansible太长了

但我真的不明白如何获得Ansible包的wheel文件.

小智 9

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

我使用带Ansible的Docker容器在我的Windows机器上开发playbooks.你的机器上需要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"]
Run Code Online (Sandbox Code Playgroud)

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

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

现在,您将能够./ansible-playbook.sh <your playbook>GIT BASH中启动Ansible playbook .如果你想在PowerShell中运行它,你可能需要删除winpty命令,但我还没有在PS中测试它.

它不是最好的解决方案,但它完成了工作.希望它也能帮到你.


Kas*_*uza 9

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

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

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

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

Ansible 将在某种程度上无法用于开发,因为它使用了一些仅限 Unix 的模块,例如grppwd。例如,您将无法运行单元测试(例如module_utils/basic.py导入 grp 和 pwd)。将 grp.py 下载到site-packages文件夹无济于事。

为了获得更流畅的体验,我建议安装 WSL(Linux 的 Windows 子系统)并使用 pip 安装 python,然后运行pip install ansible以下是在 Visual Studio Code 中使用 WSL 进行开发的方法