如果要使用Windows + Vagrant来构建Ansible环境,ansible_local会很方便
Ansible_local是什么?
ansible_local是被称为Vagrant的配置管理工具之一。
配置管理工具可以在执行vagrant up时帮助安装软件和进行配置更改,而ansible_local则是在虚拟机操作系统上安装Ansible。
参考:【Vagrant文档意译】09.虚拟化 – Qiita
请问方便吗?
只需事先准备好所需的文件,一旦运行Vagrant up,就能创建一个已安装Ansible的虚拟机。
所需的文件至少一个。非常方便。
验证环境
-
- Windows 7 professional (64bit)
-
- Vagrant 1.9.4 インストール済
-
- VirtualBox 5.1.22 インストール済
-
- ゲストOSはCentOS 6.7を使用する為、box「bento/centos-6.7」を追加済
- 対象フォルダは D:\Vagrant\ansible_test
如果想要在客户操作系统中常规安装ansible的话…… (If you want to install ansible in the guest OS normally…)
首先,让我们看一下普通的安装步骤。
首先创建一个Vagrantfile……
PS D:\Vagrant\ansible_test> vagrant init
请对于下面的Vagrantfile进行如下修改:
修改Vagrantfile的方式如下:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
#全ての仮想マシンで公開鍵を共通にする
config.ssh.insert_key = false
#box指定
config.vm.box = "bento/centos-6.7"
config.vm.define "ansible1" do |server|
server.vm.hostname = "ansible1"
server.vm.network :private_network, ip: "192.168.33.35"
# VirtualBoxのGUI上の名前を設定
server.vm.provider "virtualbox" do |vb|
vb.name = config.vm.box.gsub(/\//, "_") + "_" + server.vm.hostname
end
end
end
使用PowerShell执行以下命令以启动虚拟机(也可使用命令提示符)。
PS D:\Vagrant\ansible_local> vagrant up
连接到已启动的虚拟机并使用ssh执行yum update命令。
$ sudo yum update
为了安装Ansible,需要先安装EPEL。
$ sudo yum install epel-release
指定EPEL存储库并安装ansible。
$ sudo yum install ansible --enablerepo=epel
现在,已经在新添加的虚拟机上安装了Ansible。
使用ansible_local可以完全省去打这个命令的麻烦。
让我们尝试使用ansible_local。
只需要更改一个Vagrant环境就可以了。只需要做一次就可以了。
因为我们需要共享文件夹,所以我们要在Vagrant中添加一个叫做vbguest的插件。
PS D:\Vagrant\ansible_local> vagrant plugin install vagrant-vbguest
只需要ansible的playbook,ansible_local就能够正常运行!
我想执行”yum update”命令,所以我将按照下面的方式进行记录。
我已将”hosts: all”进行配置。由于本次只创建一个虚拟机,所以没有问题。
请将playbook放置在与Vagrantfile相同的文件夹中。
---
- hosts: all
become: true
tasks:
- name: yum update
yum:
name: '*'
state: latest
update_cache: yes
在Vagrantfile中添加共享文件夹和ansible_local的配置。
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
if Vagrant.has_plugin?("vagrant-vbguest") then
# Guest Additions自動更新の無効化設定
config.vbguest.auto_update = false
end
config.vm.box = "bento/centos-6.7"
# 共有フォルダの設定
config.vm.synced_folder ".", "/vagrant", create: true, owner: "vagrant", group: "vagrant"
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.define "ansible1" do |server|
server.vm.hostname = "ansible1"
server.vm.network :private_network, ip: "192.168.33.35"
# VirtualBoxのGUI上の名前を設定する
server.vm.provider "virtualbox" do |vb|
vb.name = config.vm.box.gsub(/\//, "_") + "_" + server.vm.hostname
end
server.vm.provision "ansible_local" do |ansible|
ansible.playbook = "playbook.yml"
end
end
end
不好意思让您久等了。接下来只需执行vagrant up命令即可。
PS D:\Vagrant\ansible_test> vagrant up
Bringing machine 'ansible1' up with 'virtualbox' provider...
==> ansible1: Importing base box 'bento/centos-6.7'...
(中略)
==> ansible1: Mounting shared folders...
ansible1: /vagrant => D:/Vagrant/ansible_test
==> ansible1: Running provisioner: ansible_local...
ansible1: Installing Ansible...
ansible1: Running ansible-playbook...
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [ansible1]
TASK [yum update] **************************************************************
changed: [ansible1]
PLAY RECAP *********************************************************************
ansible1 : ok=2 changed=1 unreachable=0 failed=0
我们已经安装了Ansible,并显示yum update已完成。现在让我们通过SSH连接到创建的虚拟机,尝试运行Ansible的版本确认命令。
[vagrant@ansible1 ~]$ ansible --version
ansible 2.3.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
已安装Ansible 2.3.0.0。安装完成。
一些感受和想法
我在CentOS上执行了上述操作,但只要是与Ansible兼容的操作系统(如Ubuntu或Debian),都可以以类似的方式执行。
然而,安装的Ansible版本将被固定为当时的最新版本。
如果想安装特定版本,就需要使用Shell配置程序等,而不是ansible_local。
无论如何,这真是太方便了。真希望我能早点知道……。
请阅读以上资料
用HashiCorp的Vagrant来尝试在Windows上使用ansible_local进行自动化配置(自动搭建环境)- Qiita
尝试使用ansible_local来搭建vagrant的开发环境 – 在岩手县进行远程工作
有一种名为ansible的配置工具可以在主机操作系统上安装ansible,但由于无法在Windows上安装ansible,所以在本次测试环境中无法使用。
还可以将多个配置写入多个文件中,这样即使在复杂的服务器配置下,也可以自动创建。