📘
現代 IT 人一定要知道的 Ansible 自動化組態技巧
  • README
  • 前言
  • Ansible 是什麼?
  • 怎麼部署 Ansible 環境?
  • 怎麼用 Vagrant 練習 Ansible?
  • 怎麼用 Docker 練習 Ansible?
  • 怎麼操作 Ansible?
  • 怎麼用 Jupyter 操控 Ansible?(localhost)
  • 怎麼用 Jupyter 操控 Ansible?(Managed node)
  • 怎麼用 Docker Compose 練習 Ansible?
  • Ansible 的開發工具有哪些?
  • 怎麼看 Ansible Modules 文件?
  • 常用的 Ansible Module 有哪些?
  • 怎麼使用 setup 取得 Managed node 的 facts?
  • 怎麼使用 Ansible 的 Template 系統?
  • 怎麼在 Playbooks 裡使用 Handlers?
  • Ansible 如何發送 notification 到 Slack?
  • Ansible 如何發送 notification 到 HipChat?
  • 如何在 Playbooks 使用 loops?
  • 如何維護大型的 Playbooks?
  • Roles 是什麼?
  • 怎麼使用 Roles?
  • 怎麼用 Roles 部署 LNMP 網頁應用程式?(上)
  • 怎麼用 Roles 部署 LNMP 網頁應用程式?(下)
  • 怎麼用 Roles 部署 TestLink?
  • 怎麼在 Ansible Galaxy 分享 Roles?(上)
  • 怎麼在 Ansible Galaxy 分享 Roles?(下)
  • 怎麼用 Travis CI 測試 Roles?
  • 怎麼混用 Ansible 建置 Docker image?
  • 怎麼在 Docker Hub 混用 Ansible 自動建置 Docker image?
  • 怎麼用 Vault 管理敏感資料?
  • 總結
Powered by GitBook
On this page
  • 08. 怎麼用 Jupyter 操控 Ansible?(Managed node)
  • 怎麼用 Jupyter 上的 Ansible 操控 Managed node?
  • 後語
  • 相關連結

Was this helpful?

Edit on GitHub

怎麼用 Jupyter 操控 Ansible?(Managed node)

Previous怎麼用 Jupyter 操控 Ansible?(localhost)Next怎麼用 Docker Compose 練習 Ansible?

Last updated 5 years ago

Was this helpful?

08. 怎麼用 Jupyter 操控 Ansible?(Managed node)

在前一章「」凍仁用了 Jupyter 來練習 Ansible,那時凍仁只介紹 Ansible 對 Control Machine 對本機進行操控的部份,這次凍仁將透過 Jupyter 和 Ansible 來操控 2 個 Managed node。

怎麼用 Jupyter 上的 Ansible 操控 Managed node?

建立 Managed node

  1. 啟動 server1 的 Managed node,其 OS 版本為 Ubuntu 14.04。

$ docker run --name server1 -d -P chusiang/ansible-managed-node:ubuntu-14.04
  1. 啟動 server2 的 Managed node,其 OS 版本為 CentOS 7。

$ docker run --name server2 -d -P chusiang/ansible-managed-node:centos-7

建立 Control Machine

  • 啟動 Control Machine,其 OS 版本為 Ubuntu 14.04。

    $ docker run -p 8888:8888 -d chusiang/ansible-jupyter:ubuntu-14.04

設定 Ansible 環境

  1. 取得本機的 IP:凍仁取得的 IP 為 192.168.1.104,請自行修改。

# GNU/Linux
$ ifconfig eth0

# macOS
$ ifconfig en7
  1. 取得 Managed node 容器所綁定的 OpenSSH port,請特別留意 0.0.0.0:*->22/tcp 的部份。

$ docker ps
CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
309616808a9e        chusiang/ansible-jupyter:ubuntu-14.04        "docker-entrypoint.sh"   2 days ago          Up 1 seconds        0.0.0.0:8888->8888/tcp   admiring_mccarthy
89fc4e7cca15        chusiang/ansible-managed-node:centos-7       "/usr/sbin/sshd -D"      2 days ago          Up 51 minutes       0.0.0.0:32806->22/tcp    server2
ecdf39055ba2        chusiang/ansible-managed-node:ubuntu-14.04   "/usr/sbin/sshd -D"      3 days ago          Up 39 hours         0.0.0.0:32805->22/tcp    server1
  1. 修改 ansible.cfg 檔案。

[defaults]

inventory = inventory
remote_user = docker
private_key_file = ~/.ssh/id_rsa
host_key_checking = False
retry_files_save_path = ./ansible-retry
  1. 修改 inventory 檔案,並填入步驟 1 取得的 IP 和步驟 2 取得的 OpenSSH port。

server1  ansible_ssh_host=192.168.1.104  ansible_ssh_port=32805
server2  ansible_ssh_host=192.168.1.104  ansible_ssh_port=32806

請勿在這個 Lab 使用 localhost 和 127.0.0.1 的位址,這會讓 Control Machine 一直對自己找 Managed node。在這裡我們是把 Managed node 的 OpenSSH port 綁在 Host OS 上,而不是 Control Machine 的容器裡。

  1. 這時 Jupyter 網站底下會有 ansible_on_jupyter.ipynb, ansible.cfg, hosts, setup_jupyter.yml 四個檔案。

Play Ansible

現在我們可以在 Jupyter 上透過 Ansible 操控 2 個 Managed node 了,記得把 inventory 的部份從 localhost 改成 all 喔!

  • 由於 Control Machine 是藉由 docker 這個 sudo user 來管理 Managed node,故我們需藉由 --become 參數來取得 Managed node 上的 sudo 權限。

    !ansible all -m command -a 'sudo cat /etc/sudoers' --become

後語

終於幫先前辛辛苦苦建置的 chusiang/ansible-jupyter 和 chusiang/ansible-managed-node 兩個 Docker image 寫了一篇完整的介紹文了!一開始建置時沒想那麼多,沒想到這樣的組合會這麼有威力!現在凍仁不管是要 debug 還是測試不同的 GNU/Linux 都會先拿這兩個 image 來用呢。:P

相關連結

使用 的 Docker image 來建立 2 個 Managed node,我們在「」的章節有說明過,在此就不多加敘述。

請參考前一章「」,使用 的 Docker image 建立 Control Machine 容器,已建立該容器者請略過此步驟。

建好 Control Machine 和 Managed node 的環境後,我們還需透過 ansible.cfg 和 inventory 檔案將兩者串接起來 (可參考「」一章)。

進入 Jupyter notebook 網站 ()。

chusiang/ansible-managed-node
05. 怎麼用 Docker 練習 Ansible?
07. 怎麼用 Jupyter 操控 Ansible?(localhost)
chusiang/ansible-jupyter
03. 怎麼部署 Ansible 環境?
http://localhost:8888/
chusiang/ansible-jupyter | Docker Hub
chusiang/ansible-managed-node | Docker Hub
前端工程師一定要知道的 Docker 虛擬化容器技巧 | 凍仁的筆記
07. 怎麼用 Jupyter 操控 Ansible?(localhost)
automate_with_ansible_practice-05.jpg
automate_with_ansible_practice-08.jpg
automate_with_ansible_practice-09.jpg
automate_with_ansible_practice-10.jpg
2016-12-08-ansible-jupyter-file-list.png
2016-12-08-ansible-jupyter-ping.gif