Ansible 用 Jupyter 操控 Ansible (localhost)

2018-07-25 10:33 更新

在「Ansible 用 Docker 練習(xí) Ansible」一章時,凍仁用了 Docker 來練習(xí) Ansible,而這次凍仁將再次結(jié)合 Jupyter 這套系統(tǒng)來使用 Ansible。

automate_with_ansible_practice-05.jpg

Jupyter 是什么?

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

官網(wǎng)簡介如下:

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,可參考以下文章:

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

怎么用 Jupyter 操控 Ansible?

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

  • alpine-3.4, latest
  • archlinux
  • centos-7
  • debian-7
  • debian-8
  • gentoo
  • opensuse-42.1
  • ubuntu-14.04
  • ubuntu-16.04

automate_with_ansible_practice-06.jpg

  1. 在終端機 (Terminal) 里啟動 Jupyter 的容器,請依個人喜好選擇 image,其 latest 標(biāo)簽 (tag) 是對應(yīng)到 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. 查看容器狀態(tài),并確認剛剛啟動的 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 網(wǎng)站。

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

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

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

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

    automate_with_ansible_practice-07.jpg

后話

最早凍仁是從 @sakanamax 前輩身上得知 Ansible + Jupyter 這個超棒的組合,并透過它們?nèi)腴T Ansible 這項技藝!

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

最后希望 chusiang/ansible-jupyter 這個 Docker image 可以幫到大家。:D

相關(guān)連結(jié)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號