使用 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进行环境配置。

广告
将在 10 秒后关闭
bannerAds