Ansible 用Vagrant練習(xí)Ansible

2018-07-25 09:45 更新

在使用 Ansible 的同時,我們可以用 Vagrant 這套純文字工具來管理本機(jī)的虛擬機(jī)器,通過它我們可以很快速的建立開發(fā)和測試的虛擬環(huán)境。

automate_with_ansible_practice-01.jpg

光是可以省下在虛擬機(jī)安裝作業(yè)系統(tǒng) (Operation System) 和 OpenSSH server 的時間,就足夠我們使用它了!更別說還可以用它來設(shè)定虛擬機(jī)的記憶體 (RAM) 大小、網(wǎng)絡(luò)配置等等。

怎么安裝 Vagrant?

請先安裝最新版的 Virtualbox 和 Extension Pack,之后再安裝 Vagrant 即可。這里凍仁將不會特別介紹怎么安裝 Vagrant,若有什么問題還請參考以下文章。

怎么用 Vagrant 管理虛擬機(jī)器?

這里凍仁只簡單地列出本次主題相關(guān)指令,練習(xí)時只需執(zhí)行步驟 1, 2 即可。

  1. 建立 Ubuntu 14.04 的 Vagrantfile 設(shè)定檔。

    $ vagrant init ubuntu/trusty64
    
  2. 建立虛擬機(jī)器并開啟機(jī)器。

    $ vagrant up
    
  3. 關(guān)閉機(jī)器。

    $ vagrant halt
    
  4. 重新開機(jī)。

    $ vagrant reload
    
  5. SSH 遠(yuǎn)端連線。

    $ vagrant ssh
    
  6. 移除虛擬機(jī)器。

    $ vagrant destroy
    

怎么讓 Ansible 操控用 Vagrant 開好的機(jī)器?

接下來,我們將會用 Ansible 來控制 Vagrant 在本機(jī)上建立的虛擬機(jī),其作業(yè)系統(tǒng)版本為 Ubuntu 14.04 64-bit (AMD64)

automate_with_ansible_practice-02.jpg

  1. 取得虛擬機(jī)的 OpenSSH 設(shè)定:請?zhí)貏e留意 HostName、UserPort 還有 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. 設(shè)定 ansible.cfgremote_user 和 private_key_file 的設(shè)定分別對應(yīng) 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. 設(shè)定 hostsansible_ssh_host 和 ansible_ssh_port 的設(shè)定分別對應(yīng) ssh-config 的 HostName 和 Port。

    $ vi hosts
    server1  ansible_ssh_host=127.0.0.1  ansible_ssh_port=2222
    
    [local]
    server1
    

Hello World on Vagrant

當(dāng)已上的設(shè)置都完成了,我們就可以在終端機(jī)里用 Vagrant 建立好的虛擬機(jī)來練習(xí) Ansible 了!

$ ansible all -m command -a 'echo Hello World on Vagrant.'
server1 | SUCCESS | rc=0 >>
Hello World on Vagrant.

后話

其實(shí)凍仁一直很掙扎要不要寫這次的「怎么用 Vagrant 練習(xí) Ansible?」主題,因?yàn)樘摂M環(huán)境的替代品真的很多!可又因?yàn)?Vagrant 實(shí)在是太好用了,所以還是不小心的提筆了。

就實(shí)戰(zhàn)面來說,凍仁還是以 Vagrant 所建立出來虛擬環(huán)境為主要開發(fā) Ansible Playbooks 的環(huán)境,因?yàn)樗娴暮芊奖?,而且模擬出來的環(huán)境最擬真!

相關(guān)連結(jié)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號