Ansible 用Vagrant练习Ansible
在使用 Ansible 的同时,我们可以用 Vagrant 这套纯文字工具来管理本机的虚拟机器,通过它我们可以很快速的建立开发和测试的虚拟环境。
光是可以省下在虚拟机安装作业系统 (Operation System) 和 OpenSSH server 的时间,就足够我们使用它了!更别说还可以用它来设定虚拟机的记忆体 (RAM) 大小、网络配置等等。
怎么安装 Vagrant?
请先安装最新版的 Virtualbox 和 Extension Pack,之后再安装 Vagrant 即可。这里冻仁将不会特别介绍怎么安装 Vagrant,若有什么问题还请参考以下文章。
怎么用 Vagrant 管理虚拟机器?
这里冻仁只简单地列出本次主题相关指令,练习时只需执行步骤 1, 2 即可。
建立 Ubuntu 14.04 的
Vagrantfile
设定档。$ vagrant init ubuntu/trusty64
建立虚拟机器并开启机器。
$ vagrant up
关闭机器。
$ vagrant halt
重新开机。
$ vagrant reload
SSH 远端连线。
$ vagrant ssh
移除虚拟机器。
$ vagrant destroy
怎么让 Ansible 操控用 Vagrant 开好的机器?
接下来,我们将会用 Ansible 来控制 Vagrant 在本机上建立的虚拟机,其作业系统版本为 Ubuntu 14.04 64-bit (AMD64)。
取得虚拟机的 OpenSSH 设定:请特别留意
HostName
、User
、Port
还有IdentityFile
的值。$ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /home/jonny/vcs/4.docs/automate-with-ansible/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
设定 ansible.cfg:
remote_user
和private_key_file
的设定分别对应 ssh-config 的User
和IdentityFile
。$ vi ansible.cfg [defaults] hostfile = hosts remote_user = vagrant private_key_file = .vagrant/machines/default/virtualbox/private_key host_key_checking = False
设定 hosts:
ansible_ssh_host
和ansible_ssh_port
的设定分别对应 ssh-config 的HostName
和Port
。$ vi hosts server1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 [local] server1
Hello World on Vagrant
当已上的设置都完成了,我们就可以在终端机里用 Vagrant 建立好的虚拟机来练习 Ansible 了!
$ ansible all -m command -a 'echo Hello World on Vagrant.'
server1 | SUCCESS | rc=0 >>
Hello World on Vagrant.
后话
其实冻仁一直很挣扎要不要写这次的「怎么用 Vagrant 练习 Ansible?」主题,因为虚拟环境的替代品真的很多!可又因为 Vagrant 实在是太好用了,所以还是不小心的提笔了。
就实战面来说,冻仁还是以 Vagrant 所建立出来虚拟环境为主要开发 Ansible Playbooks 的环境,因为它真的很方便,而且模拟出来的环境最拟真!