繁体   English   中英

Cygwin - 如何安装ansible?

[英]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:

  • 打开 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 的问题。

取自Ansible 文档

要考虑的一种替代方法是在 Windows 主机上运行 Linux 虚拟机,并将其用作 Ansible 控制器。


    1.下载cygwin
    2.在“选择包”页面上,从视图(左上角)中选择“类别”
    3.将“开发”标记为“安装”(您将“默认”更改为“安装”
    4. 将“Python”标记为“安装”
    5.从“Web”中选择“wget”
    6.从“Net”中选择“Openssh”
    7. 使用“下一步”安装软件包的进度
    8.转到安装cygwin的目标文件夹
    9.右键单击“Cygwin.bat”并以管理员身份运行
    10. 编写“easy_install-2.7 pip”
    11.写“pip2 install ansible”


您还需要对所有包进行 rebase 以解决分叉问题,为此请编写:

  1. 变基触发器已满
  2. 关闭 Cygwin shell(甚至重新启动 Windows)
  3. 再次运行 Cygwin 安装程序,然后单击“下一步”直到安装结束,然后 Cygwin 将重新设置所有软件包的基础。

之后你可以毫无问题地使用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) 的步骤

  1. 安装 Cygwin
  2. 安装python3
c:\cygwin64-setup>setup-x86_64.exe -q -P python3
$ python3 --version
  1. 安装pip
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py
$ pip --version
  1. 安装开发工具(用于 Ansible)
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
  1. 安装ansible
$ pip install ansible
$ ansible --version
  1. 检查使用的是哪个 ssh ( https://serverfault.com/a/913435 )
% 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM