Ansible 用 Jupyter 操控 Ansible (localhost)
在「Ansible 用 Docker 练习 Ansible」一章时,冻仁用了 Docker 来练习 Ansible,而这次冻仁将再次结合 Jupyter 这套系统来使用 Ansible。
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,可参考以下文章:
- Jupyter 简介 — 互动式的笔记本系统 by mutolisp | SlideShare
- Jupyter Notebook 快速入门(上)| 编程派 (Coding Python)
- Jupyter Notebook 快速入门(下)| 编程派 (Coding Python)
现在连 Microsoft Azure 都推出了 Notebooks 的 SaaS 服务在抢攻 Jupyter 的市场,得以证实它受欢迎程度非常之高。
怎么用 Jupyter 操控 Ansible?
冻仁已建好了作为 Control Machine 的 Jupyter Docker image - chusiang/ansible-jupyter
,大家可从 Docker Hub 上取得。目前支持的 Linux 发行版本有:
- alpine-3.4, latest
- archlinux
- centos-7
- debian-7
- debian-8
- gentoo
- opensuse-42.1
- ubuntu-14.04
- ubuntu-16.04
在终端机 (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
查看容器状态,并确认刚刚启动的 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
于浏览器输入 http://localhost:8888/ 进入 Jupyter 网站。
- 开启
ansible_on_jupyter.ipynb
档案。 试著在 Jupyter 上操控 Ansible 吧!
在 Jupyter 上要执行 Shell 指令时,记得要在开头加上
!
的前缀字元。- 在 Code Block 输入完指令后,点击选单列的 ▶▏或使用
<Ctrl>
+<Enter>
的快捷键即可执行。 - 练习完,记得下载这本 notebook (透过左上角的
File
选单里有Download as
的项目进行下载),不然一旦等容器被移除该笔记就没了! 現在的環境其實只有 Control Machine 一台,所以 inventory 的設定只有
localhost
有作用!
后话
最早冻仁是从 @sakanamax 前辈身上得知 Ansible + Jupyter 这个超棒的组合,并透过它们入门 Ansible 这项技艺!
在 2016 年第 8 届铁人赛开赛前夕,冻仁便尝试把这个组合移植到更多的 GNU/Linux 发行版本上,前后约花了 2 周才完成呢。
最后希望 chusiang/ansible-jupyter
这个 Docker image 可以帮到大家。:D