[英]Cygwin - How to install ansible?
如何使用 Cygwin 获取/安装 ansible?
我尝试了以下步骤,但在第 5 条(运行“ python setup.py install ”时)期间不起作用。 步骤取自:取自https://servercheck.in/blog/running-ansible-within-windows
1) 下载并安装 Cygwin,至少选择以下软件包(您可以在安装过程中选择软件包):
libyaml
libyaml-devel
curl
python (2.7.x)
python-crypto
python-openssl
python-paramiko
python-setuptools
git (2.1.x)
vim
openssh
openssl
openssl-devel
2) 下载并安装 PyYAML 和 Jinja2,因为它们无法通过 Cygwin 的安装程序获得:
1. Open Cygwin
2. Download PyYAML:
curl -O https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.10.tar.gz
3. Download Jinja2:
curl -O https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz
4. Untar both downloads:
tar -xvf PyYAML-3.10.tar.gz && tar -xvf Jinja2-2.6.tar.gz
5. Change directory into each of the expanded folders and run python "python setup.py install" to install each package.
6. Clone ansible from its repository on GitHub:
git clone https://github.com/ansible/ansible /opt/ansible
This was tested with Ansible version v1.6.6, change directory into /opt/ansible and checkout the correct tag: git checkout v1.6.6.
7. Add the following lines into your Cygwin .bash_profile:
# Ansible settings
ANSIBLE=/opt/ansible
export PATH=$PATH:$ANSIBLE/bin
export PYTHONPATH=$ANSIBLE/lib
export ANSIBLE_LIBRARY=$ANSIBLE/library
8. At this point, you should be able to run ansible commands via Cygwin (once you restart, or enter source ~/.bash_profile to pick up the settings you just added).
Try ansible --version to display Ansible's version.
9. Passwordless ssh will need to be set up between your Windows machine and the deployment host(s)
To enable passwordless ssh on Centos - ssh-copy-id root@node
To enable passwordless ssh on SuSE I followed the steps in this blog:
http://www.firedaemon.com/blog/passwordless-root-ssh-public-key-authentication-on-centos-6
install sshpass v1.05 on your Windows machine<br>
我在子弹 5 中遇到的错误是:
$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib.cygwin-2.2.1-x86_64-2.7
creating build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/composer.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/constructor.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/cyaml.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/dumper.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/emitter.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/error.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/events.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/loader.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/nodes.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/parser.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/reader.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/representer.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/resolver.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/scanner.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/serializer.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/tokens.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
copying lib/yaml/__init__.py -> build/lib.cygwin-2.2.1-x86_64-2.7/yaml
running build_ext
creating build/temp.cygwin-2.2.1-x86_64-2.7
checking if libyaml is compilable
gcc -fno-strict-aliasing -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/build=/usr/src/debug/python-2.7.10-1 -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/src/Python-2.7.10=/usr/src/debug/python-2.7.10-1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/cygdrive/c/cygwin/include/python2.7 -c build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.c -o build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.o
checking if libyaml is linkable
gcc build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.o -L/cygdrive/c/cygwin/lib/python2.7/config -L/usr/lib -lyaml -o build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.exe
skipping 'ext/_yaml.c' Cython extension (up-to-date)
building '_yaml' extension
creating build/temp.cygwin-2.2.1-x86_64-2.7/ext
gcc -fno-strict-aliasing -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/build=/usr/src/debug/python-2.7.10-1 -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/src/Python-2.7.10=/usr/src/debug/python-2.7.10-1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/cygdrive/c/cygwin/include/python2.7 -c ext/_yaml.c -o build/temp.cygwin-2.2.1-x86_64-2.7/ext/_yaml.o
ext/_yaml.c:4:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
.
$ ansible --version
Traceback (most recent call last):
File "/opt/ansible/bin/ansible", line 40, in <module>
from ansible.utils.display import Display
File "/opt/ansible/lib/ansible/utils/display.py", line 35, in <module>
from ansible import constants as C
File "/opt/ansible/lib/ansible/constants.py", line 30, in <module>
from ansible.parsing.splitter import unquote
File "/opt/ansible/lib/ansible/parsing/__init__.py", line 32, in <module>
from ansible.parsing.vault import VaultLib
File "/opt/ansible/lib/ansible/parsing/vault/__init__.py", line 82, in <module>
from cryptography.hazmat.primitives.hashes import SHA256 as c_SHA256
File "/cygdrive/c/cygwin/lib/python2.7/site-packages/cryptography/hazmat/primitives/hashes.py", line 15, in <module>
from cryptography.hazmat.backends.interfaces import HashBackend
File "/cygdrive/c/cygwin/lib/python2.7/site-packages/cryptography/hazmat/backends/__init__.py", line 7, in <module>
import pkg_resources
File "/cygdrive/c/cygwin/lib/python2.7/site-packages/pkg_resources/__init__.py", line 84, in <module>
packaging = pkg_resources._vendor.packaging
AttributeError: 'module' object has no attribute '_vendor'
容易得多:
#!/bin/sh
type apt-cyg || exit
apt-cyg install git python-{jinja2,six,yaml}
git clone --depth 1 git://github.com/ansible/ansible
cd ansible
PATH+=:~+/bin
export PYTHONPATH=~+/lib
ansible --version
结果
ansible 2.0.0 (devel 2a50957ad8) last updated 2015/09/15 21:22:17 (GMT -500)
假设安装了 Cygwin:
alias cyg-get="/path/to/cygwin/setup/package/setup-x86_64.exe -q -P"
cyg-get cygwin32-gcc-g++,gcc-core,gcc-g++,git,libffi-devel,nano,openssl,openssl-devel,python-crypto,python3,python3-devel,python3-openssl,python3-pip,python3-setuptools,python3-devel,tree,wget,zip,make
pip
通过pip3 install --upgrade pip
pip install ansible
笔记:
cyg-get
别名允许您通过命令行安装所有软件包,而不是在 Cygwin UI 中搜索。
ansible 安装包括执行“Running setup.py bdist_wheel for pynacl”的步骤——这至少需要半小时,但最终会完成。
尽管 Ansible 可以在 Cygwin 中运行,但请注意,它并未得到官方支持,而且听起来不会在不久的将来得到支持。
注意从 Windows 控制机器运行 Ansible 不是该项目的目标。 不要要求此功能,因为它限制了我们将来可以在主项目中使用的技术、功能和代码。 需要一台 Linux 控制机来管理 Windows 主机。
Cygwin 不受支持,因此请不要询问有关从 Cygwin 运行的 Ansible 的问题。
要考虑的一种替代方法是在 Windows 主机上运行 Linux 虚拟机,并将其用作 Ansible 控制器。
您还需要对所有包进行 rebase 以解决分叉问题,为此请编写:
之后你可以毫无问题地使用ansible(我希望你会和我有同样的情况,因为它对我有用)
我花了很多天搜索并尝试解决在 Windows 10 Home Edtion 上安装 ansible 的问题
使用更高版本的安装程序https://cygwin.com/setup-x86_64.exe,您可以直接安装 ansible 和 ansible-doc。 只需从列表中选择它并设置为安装。
试试这个 apt-get remove python-cryptography,你也可能需要手动安装 paramiko-1.10.0.tar.gz。
➤ ansible --version ansible 2.1.0
Ansible 2.7.6 和 Python3 以及 Cygwin 2.11.2(0.329/5/3) 的步骤
c:\cygwin64-setup>setup-x86_64.exe -q -P python3
$ python3 --version
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py
$ pip --version
c:\cygwin64-setup>setup-x86_64.exe -q -P make
c:\cygwin64-setup>setup-x86_64.exe -q -P gcc-g++
c:\cygwin64-setup>setup-x86_64.exe -q -P python3-devel
c:\cygwin64-setup>setup-x86_64.exe -q -P libffi-devel
c:\cygwin64-setup>setup-x86_64.exe -q -P openssl-devel
c:\cygwin64-setup>setup-x86_64.exe -q -P openssh
$ pip install ansible
$ ansible --version
% which ssh
/cygdrive/c/WINDOWS/System32/OpenSSH/ssh
注意:如果不使用 cygwin ssh(如上),请更改 cygwin 的 env PATH 变量或更改带有ansible_ssh_executable=/usr/bin/ssh
标志的ansible_ssh_executable=/usr/bin/ssh
库存主机文件项
我在“解析符号链接”方面遇到了问题 - 所以我无法从“pip install /path/absible.tar.gz”安装它但我将它(在 root = 管理员下)解压到文件夹并从文件夹安装,而不是存档. 而且 - 哦,它有效 - ansible 已安装到 cygwin。
这对我有用:
~$ cat setup_ansible_cygwin.sh
#!/bin/sh
echo binutils,curl,gcc-g++,git,gmp,libffi-devel,libgmp-devel,\
make,nano,openssh,openssl-devel,python-crypto,python-paramiko, \
python2,python2-devel,python2-openssl,python2-pip,python2-setuptools |\
tr ',' ' ' |\
xargs apt-cyg install
apt-cyg remove python2
apt-cyg install python2
pip2 install --upgrade pip
pip2 install ansible
# inside: Installing collected packages: MarkupSafe, jinja2, PyYAML, ansible
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.