在Windows 上使用 Ansible
这篇文章是使用在Windows上安装的ConEmu、MSYS2、Python2和Docker Toolbox进行操作。
请根据需要更改用户名。
如何在Windows上使用Ansible?
使用Windows上的终端执行ansible命令是最轻松的方法吗?我努力尝试了这个方法,但似乎无法成功。最后我发现按用途使用Docker或Vagrant是最方便的方法。以下是我总结的试错结果。最后,我将记录下在Windows上使用Docker重新利用Ansible角色的方法。
在MSYS2上安装尝试使用Ansible。
首先,我打算将Ansible作为Windows本地程序进行安装。
我将使用MSYS2并通过设置MSYSTEM=mingw64来启动shell。
我通过pip进行了安装。
Python2和pip是使用mingw64软件源进行安装的。
在构建pycrypto和cryptography时,可能会缺少某些库。
如果遇到这种情况,您可以设置CFLAGS变量,以便在gcc编译时可以纠正include路径。
我成功安装了,生成了Windows的原生二进制文件。
但是当我尝试运行时,出现了“ImportError: No module named fcntl”的错误,失败了。
然后使用MSYSTEM=msys作为shell启动。
Python2和pip使用了msys仓库中公开的软件。
但是在尝试运行时出现了 ImportError: No module named fcntl 的错误,并且再次失败。
我在命令提示符上安装试试Ansible。
我通过Windows安装程序安装了Python2并尝试安装了Ansible。
值得感激的是,Python2在构建过程中使用的Windows编译器是由Microsoft提供的。
然后你可以成功地安装Ansible。
但是当你尝试运行时,却报错说“没有找到名为fcntl的模块”,所以又失败了。
$ /c/Python27/Scripts/ansible --version
Traceback (most recent call last):
File "C:/Python27/Scripts/ansible", line 45, in <module>
from ansible.utils.display import Display
File "C:\python27\lib\site-packages\ansible\utils\display.py", line 21, in <module>
import fcntl
ImportError: No module named fcntl
然后我尝试使用Anaconda2,但是同样遇到了无法解决的错误。
使用Vagrant和VirtualBox来使用Ansible
我认为Ansible可以用作配置管理的场景。
Vagrant作为一种配置管理方法,提供了Ansible作为配置管理者。
由于Windows上未安装Ansible,因此我们将使用Ansible Local。令人惊叹地,我们成功使用Ansible进行了配置。
考虑重用Role和创建新的Role
在中国,只需要一个选项就可以。在Ansible中,有一个名为ansible-galaxy的命令。它为了角色的重用而提供,所以我想创建一个角色。然而,在Windows上,除了用于配置管理场景之外,无法使用Ansible。
我尝试使用Docker来实现角色的重用。
最后我们将使用Docker来尝试重复使用角色的方法。我们将使用Docker Machine来准备使用docker命令的环境。
$ docker run --rm -v "//c/Users/<username>/ansible/roles:/etc/ansible/roles" ansible/ansible-container-builder:0.3 ansible-galaxy install geerlingguy.apache
在除了提供服务以外的场景中,使用Docker会是最方便的选择。
以上是关于如何在Windows上使用Ansible的方法。
如果我的MSYS2知识不足或有错误,请您指导我。在Windows开发中,我经常遇到各种问题,如果能得到某人的帮助,我将非常感激。