我正在努力在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文件。
答案 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:
您可能还需要建立一个符号链接,例如 New-Item -ItemType SymbolicLink -Name ansible_release.py -Target。\ lib \ ansible \ release.py -但不应我认为有必要。
该ansible仍将无法用于开发,因为它使用了某些
我建议安装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 )。我通过执行以下操作使其部分安装(有些故障,但不足以停止安装):
<app-button>
C:\Temp\ansible-2.9.2
以从setup.py
立即返回来删除符号链接依赖性:
_maintain_symlinks
def _maintain_symlinks(symlink_type, base_path):
return
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一样,现在您可以使用
轻松安装ansiblesudo 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个改进:
文件->首选项->设置 或直接通过按键访问 [CTRL] + [,]
“ terminal.integrated.shell.windows”:“ C:\ Windows \ System32 \ bash.exe”
仍然,您必须按照原始VS code & WSL文章(在WSL中的安装位置)熟悉自己的内容-您需要找到合适的项目位置才能继续...
此外,您可能想要安装那里提到的git。另外,VS代码扩展that the ansible project recommends可能派上用场。有关基本“ ansible”扩展的功能介绍,请参见here。
愉快的编码和测试(使用VS Code)!