使用 Windows + vagrant 简化 ansible 的使用
– 结果
– 最后的结论
– 总结
– 结论是
有点不正规(?)。使用Shell。
也许会被认为是“邪巫”,但这是最简单的方法。
经历
以前我一直使用Vagrant和Chef进行环境部署,但现在流行的是「Ansible」,所以我想尝试一下。
相比Chef,我觉得使用YAML来进行配置确实更简单。而且,很多人都发布了各种各样的playbook,所以很容易就能集成所需的模块。(Chef可能也有类似的情况)
所以,當我實際著手解決問題時,卻遇到了由於Windows引起的錯誤,所以我轉變思路,試圖簡單解決並且做下備忘。
任务内容
创建vagrant + ansible环境的设置文件
我基本上是参考了这篇文章 “使用vagrant+ansible来搭建开发环境(操作系统安装篇)” 来准备的。
在进行到此文章的 “Ansible的验证步骤” 时,遇到了以下错误。
C:\Users\Project\vagrant>vagrant provision
==> default: Running provisioner: ansible...
Windows is not officially supported for the Ansible Control Machine.
Please check https://docs.ansible.com/intro_installation.html#control-machine-requirements
…略
这与其说是读了字面意思,倒不如说是Windows系统不支持ansible,这样的公司真是糟糕,只能为开发电脑提供Windows系统。
如果向前辈报告这样的事情,他可能会说一句话:“既然已经可以使用shell了,为什么不在vm的挂载目录中执行ansible?”
哇(゚д゚)
实现一个在VM中运行ansible的shell
#!/bin/bash
if ! [`which ansible`]; then
yum install -y epel-release
yum install -y ansible
fi
ansible-playbook -vv -i /vagrant/ansible/hosts /vagrant/ansible/playbook.yml
所以,需要修改Vagrntfile文件以在provision中执行此操作。
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
(中略)
# Ansible provisioning
config.vm.provision "shell", :path => "ansible.sh"
end
在充分准备下执行 “vagrant up”,成功地使用ansible搭建了环境!
对于shell的”yum install ~~”部分,它需要根据主机操作系统进行相应的更改,这是一个棘手的问题。
以上的方式在Windows和vagrant上可以使用ansible进行环境配置。