codecamp

Ansible 用Vagrant练习Ansible

在使用 Ansible 的同时,我们可以用 Vagrant 这套纯文字工具来管理本机的虚拟机器,通过它我们可以很快速的建立开发和测试的虚拟环境。

automate_with_ansible_practice-01.jpg

光是可以省下在虚拟机安装作业系统 (Operation System) 和 OpenSSH server 的时间,就足够我们使用它了!更别说还可以用它来设定虚拟机的记忆体 (RAM) 大小、网络配置等等。

怎么安装 Vagrant?

请先安装最新版的 Virtualbox 和 Extension Pack,之后再安装 Vagrant 即可。这里冻仁将不会特别介绍怎么安装 Vagrant,若有什么问题还请参考以下文章。

怎么用 Vagrant 管理虚拟机器?

这里冻仁只简单地列出本次主题相关指令,练习时只需执行步骤 1, 2 即可。

  1. 建立 Ubuntu 14.04 的 Vagrantfile 设定档。

    $ vagrant init ubuntu/trusty64
    
  2. 建立虚拟机器并开启机器。

    $ vagrant up
    
  3. 关闭机器。

    $ vagrant halt
    
  4. 重新开机。

    $ vagrant reload
    
  5. SSH 远端连线。

    $ vagrant ssh
    
  6. 移除虚拟机器。

    $ vagrant destroy
    

怎么让 Ansible 操控用 Vagrant 开好的机器?

接下来,我们将会用 Ansible 来控制 Vagrant 在本机上建立的虚拟机,其作业系统版本为 Ubuntu 14.04 64-bit (AMD64)

automate_with_ansible_practice-02.jpg

  1. 取得虚拟机的 OpenSSH 设定:请特别留意 HostNameUserPort 还有 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
    
  2. 设定 ansible.cfgremote_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
    
  3. 设定 hostsansible_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 的环境,因为它真的很方便,而且模拟出来的环境最拟真!

相关连结


Ansible 环境部署
Ansible 用 Docker 练习 Ansible
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }