怎麼用 Docker 練習 Ansible?

05. 怎麼用 Docker 練習 Ansible?

在前一章「04. 怎麼用 Vagrant 練習 Ansible?」我們是使用 Virtualbox + Vagrant 的組合來練習 Ansible,這次凍仁將會改用當前最火紅的 Docker 虛擬化容器技術來建置虛擬環境。

automate_with_ansible_practice-03.jpg

Docker 的好凍仁在此就不多談,大家若對 Docker 還不熟悉,可以看看凍仁以前分享過的「前端工程師一定要知道的 Docker 虛擬化容器技巧」簡報,這是一份讓人快速上手 Docker 的教學。

怎麼安裝 Docker?

請安裝最新版的 Docker 即可。這裡凍仁將不會特別介紹怎麼安裝,請參考以下文章。

怎麼用 Docker 管理容器 (Container)?

凍仁已在 Docker Hub 上建好了 Managed Node 的 Docker image - chusiang/ansible-managed-node 以利大家練習 Ansible,該專案目前支援的 Linux 發行版本有:

  • alpine-3.4 (End-of-life, EOL)

  • alpine-3.6, latest

  • archlinux

  • centos-6

  • centos-7

  • debian-7

  • debian-8

  • gentoo (EOL)

  • opensuse-42.1 (EOL)

  • opensuse-42.2

  • opensuse-42.3

  • ubuntu-14.04

  • ubuntu-16.04

底下將列出本次主題所會用到的相關指令,練習時只需執行步驟 1, 2, 3 即可。

  1. 取得凍仁事先建立好的 Docker image。

  2. 建立並執行容器。

  3. 觀看容器狀態和 SSH 綁定的埠口 (Port)。

  4. 進入容器。

  5. 關閉容器。

  6. 啟用容器。

  7. 移除容器。

怎麼讓 Ansible 操控用 Docker 開好的容器?

接下來,我們將會用 Ansible 來控制 Docker 在本機上建立的容器,其作業系統版本為 Ubuntu 14.04 64-bit (AMD64),大家可以從 Dockerfile 看到裡面已預載了 OpenSSH server 和 Python。

automate_with_ansible_practice-04.jpg
  1. 取得容器的 OpenSSH 設定:請特別留意 0.0.0.0:32805->22/tcp 的值。

  2. 設定 ansible.cfg:將 remote_user 設為 docker

  3. 設定 hosts

    1. ansible_ssh_host:請設為本機的 IP。

    2. ansible_ssh_port:請設為 docker ps 時取得的 SSH port。

    3. ansible_ssh_pass:因沒有連線用的 SSH 金鑰,故直接使用密碼的方式進行連線,建議只於練習環境使用該參數。

Hello World on Docker

當已上的設置都完成了,我們就可以在終端機裡用 Docker 建立好的容器來練習 Ansible 了!

後語

就實務面而言,凍仁一般會先在 Vagrant 的虛擬環境先開發好 Ansible Playbooks,有 Dockerize 需求再來相容 Docker 的環境。

Vagrant 利於開發,而 Docker 利於散佈、部署和節省資源,要怎麼搭配使用就看個人的習慣了。

相關連結

Last updated

Was this helpful?