iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
0

現代 IT 人一定要知道的 Ansible 自動化組態技巧

04. 怎麼用 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_userprivate_key_file 的設定分別對應 ssh-config 的 UserIdentityFile

    $ 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_hostansible_ssh_port 的設定分別對應 ssh-config 的 HostNamePort

    $ 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 的環境,因為它真的很方便,而且模擬出來的環境最擬真!

相關連結


上一篇
02. Ansible 是什麼?
下一篇
05. 怎麼用 Docker 練習 Ansible?
系列文
現代 IT 人一定要知道的 Ansible 自動化組態技巧31

1 則留言

0
凍仁翔
iT邦新手 4 級 ‧ 5 月前

在開發 Ansible Playbooks 時,我們通常都會藉由 vagrant provision 的指令來快速執行 playbook,Ansible 和 Vagrant 整合起來真的很好用!

大家可以參考 tsoliangwu0130 的 [Day 08] 透過 Vagrant 運行 playbook - iT 邦幫忙 一文。

我要留言

立即登入留言