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

07. 怎麼用 Jupyter 操控 Ansible?(localhost)

在「05. 怎麼用 Docker 練習 Ansible?」一章時,凍仁用了 Docker 來練習 Ansible,而這次凍仁將再次結合 Jupyter 這套系統來使用 Ansible。

automate_with_ansible_practice-05.jpg

Jupyter 是什麼?

Jupyter 的全名為 Jupyter Notebook,是從 2014 年的 iPython 專案演變而來的。它是個可以透過網頁來撰寫可互動式的文件系統,除了支援 Markdown, Python 和 (幾乎) 所有的程式語言外,還可以在上面執行 Shell 指令!

官網簡介如下:

The Jupyter Notebook is a web application that allows you to create and share documents that contain live code, equations, visualizations and explanatory text.

若想深入了解 Jupyter,可參考以下文章:

現在連 Microsoft Azure 都推出了 Notebooks 的 SaaS 服務在搶攻 Jupyter 的市場,得以證實它受歡迎程度非常之高。

怎麼用 Jupyter 操控 Ansible?

凍仁已建好了作為 Control MachineJupyter Docker image - chusiang/ansible-jupyter,大家可從 Docker Hub 上取得。目前支援的 Linux 發行版本有:

  • alpine-3.4 (End-of-life, EOL)
  • alpine-3.6, latest
  • archlinux
  • centos-7
  • debian-7
  • debian-8
  • gentoo (EOL)
  • opensuse-42.1 (EOL)
  • opensuse-42.2
  • opensuse-42.3
  • ubuntu-14.04
  • ubuntu-16.04

automate_with_ansible_practice-06.jpg

  1. 在終端機 (Terminal) 裡啟動 Jupyter 的容器,請依個人喜好選擇 image,其 latest 標籤 (tag) 是對應到 alpine-3.4

    # alpine-3.4
    $ docker run -p 8888:8888 -d chusiang/ansible-jupyter:alpine-3.4
    
    # ubuntu-14.04
    $ docker run -p 8888:8888 -d chusiang/ansible-jupyter:ubuntu-14.04
    
  2. 查看容器狀態,並確認剛剛啟動的 Jupyter 容器是有否綁定 Port 到 8888 上。

    $ docker ps
    CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
    4c5e92f73db8        chusiang/ansible-jupyter:ubuntu-14.04        "docker-entrypoint.sh"   44 hours ago        Up 3 seconds        0.0.0.0:8888->8888/tcp   naughty_elion
    
  3. 於瀏覽器輸入 http://localhost:8888/ 進入 Jupyter 網站。

  4. 開啟 ansible_on_jupyter.ipynb 檔案。
  5. 試著在 Jupyter 上操控 Ansible 吧!

    2016-12-07-ansible-jupyter-ping.gif

  6. 在 Jupyter 上要執行 Shell 指令時,記得要在開頭加上 ! 的前綴字元。

  7. 在 Code Block 輸入完指令後,點擊選單列的 ▶▏或使用 <Ctrl> + <Enter> 的快捷鍵即可執行。
  8. 練習完,記得下載這本 notebook (透過左上角的 File 選單裡有 Download as 的項目進行下載),不然一旦等容器被移除該筆記就沒了!
  9. 現在的環境其實只有 Control Machine 一台,所以 inventory 的設定只有 localhost 有作用!

    automate_with_ansible_practice-07.jpg

後語

最早凍仁是從 @sakanamax 前輩身上得知 Ansible + Jupyter 這個超棒的組合,並透過它們入門 Ansible 這項技藝!

在 2016 年第 8 屆鐵人賽開賽前夕,凍仁便嘗試把這個組合移植到更多的 GNU/Linux 發行版本上,前後約花了 2 週才完成呢。

最後希望 chusiang/ansible-jupyter 這個 Docker image 可以幫助到大家入門 Ansible。:D

相關連結

results matching ""

    No results matching ""