怎麼用 Docker 練習 Ansible?
Last updated
Last updated
在前一章「04. 怎麼用 Vagrant 練習 Ansible?」我們是使用 Virtualbox + Vagrant 的組合來練習 Ansible,這次凍仁將會改用當前最火紅的 Docker 虛擬化容器技術來建置虛擬環境。
Docker 的好凍仁在此就不多談,大家若對 Docker 還不熟悉,可以看看凍仁以前分享過的「前端工程師一定要知道的 Docker 虛擬化容器技巧」簡報,這是一份讓人快速上手 Docker 的教學。
請安裝最新版的 Docker 即可。這裡凍仁將不會特別介紹怎麼安裝,請參考以下文章。
凍仁已在 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 即可。
取得凍仁事先建立好的 Docker image。
建立並執行容器。
觀看容器狀態和 SSH 綁定的埠口 (Port)。
進入容器。
關閉容器。
啟用容器。
移除容器。
接下來,我們將會用 Ansible 來控制 Docker 在本機上建立的容器,其作業系統版本為 Ubuntu 14.04 64-bit (AMD64),大家可以從 Dockerfile 看到裡面已預載了 OpenSSH server 和 Python。
取得容器的 OpenSSH 設定:請特別留意 0.0.0.0:32805->22/tcp
的值。
設定 ansible.cfg:將 remote_user
設為 docker
。
設定 hosts。
ansible_ssh_host
:請設為本機的 IP。
ansible_ssh_port
:請設為 docker ps
時取得的 SSH port。
ansible_ssh_pass
:因沒有連線用的 SSH 金鑰,故直接使用密碼的方式進行連線,建議只於練習環境使用該參數。
當已上的設置都完成了,我們就可以在終端機裡用 Docker 建立好的容器來練習 Ansible 了!
就實務面而言,凍仁一般會先在 Vagrant 的虛擬環境先開發好 Ansible Playbooks,有 Dockerize 需求再來相容 Docker 的環境。
Vagrant 利於開發,而 Docker 利於散佈、部署和節省資源,要怎麼搭配使用就看個人的習慣了。