怎麼用 Docker Compose 練習 Ansible?
Last updated
Was this helpful?
Last updated
Was this helpful?
在前一章「08. 怎麼用 Jupyter 操控 Ansible?(Managed node)」我們藉由 Docker 實作用 Control Machine 和 Managed node 的環境。雖看似完美,可當容器一多就會讓建置環境的流程變得複雜且繁瑣,這次凍仁將改用 Docker Compose 來簡化練習 Ansible 的步驟。
Docker Compose 是個用來定義和執行複雜 Docker 應用程式的工具,它就好比 Shell Script 和 Ansible Playbooks,透過事先撰寫好的 docker-compose.yml
來批次管理 Docker 容器。
官網簡介如下:
Docker Compose allows you to define your multi-container application with all of its dependencies in a single file, then spin your application up in a single command.
若想深入了解 Docker Compose,可參考以下文章:
底下只列出本次主題所會用到的相關指令,練習時只需執行步驟 1, 2 即可。
建立並執行容器。
觀看容器狀態和綁定的埠口 (Port)。
停止容器。
啟用容器。
移除容器:再移除之前得先停用容器後才可移除。
上一章我們開了 3 個 Docker 容器來實作 Control Machine (Jupyter, Ansible) + Managed node (CentOS 7, Ubuntu 14.04) 的環境,這次就再加一個 Debian 8 的 Managed node,並命名為 server3。
docker-compose.yml
這次凍仁挑了 chusiang/ansible-jupyter:alpine-3.4
的 Docker image 作為 Control Machine,而新加入的 Managed node 則是 chusiang/ansible-managed-node:debian-8
。
使用 docker-compose up
來批次秒開所有容器!
這部份大多與前一章的 08. 怎麼用 Jupyter 操控 Ansible?(Managed node) 重複,請特別留意 inventory
檔案的設置。
取得本機的 IP:凍仁取得的 IP 為 192.168.1.104
,請自行修改。
取得 Managed node 容器所綁定的 OpenSSH port,請特別留意 0.0.0.0:222?->22/tcp
的部份。
進入 Jupyter notebook 網站 (http://localhost:8888/)。
若不想透過 Jupyter 操作 Ansible,可直接進入容器裡操作,但要記得切換到 /home
目錄底下。
修改 inventory
檔案,並填入步驟 1 取得的 IP 和步驟 2 取得的 OpenSSH port。這次容器的 Port mapping 將會依照 docker-compose.yml 所定義的內容建立,不像原先得一個個的手動設定。
請勿在這個 Lab 使用 localhost 和 127.0.0.1 的位址,這會讓 Control Machine 一直對自己找 Managed node。在這裡我們是把 Managed node 的 OpenSSH port 綁在 Host OS [^1] 上,而不是 Control Machine 的容器裡。
環境建置完成!現在可以到 Control Managed (Jupyter + Ansible) 上對各個 Managed node (Ubuntu 14.04, CentOS 7, Debian 8) 進行操作了。
現在我們可以透過 Ansible 操控 3 個 Managed node 了,記得把 inventory 的部份從 localhost
改成 all
喔!
改用 Docker Compose 管理容器後,我們可以一次對所有容器進行操作,並大幅簡化建置複雜 Ansible 練習環境的操作流程!
以上,希望大家會喜歡簡化過的 Docker Compose 流程。:D
圖片來源: https://www.docker.com/products/docker-compose