連 Python 都沒有,怎麼辦? (14:38)
之前介紹過,想被 Ansible 管理的主機(以 Ansible 術語來說:managed node),先決條件有二:
- 提供 ssh 管道供外界登入控制。
- 本身有預載 Python(最低要求為 1.5 版)。
關於第二點,雖然對於近代的 Linux distribution 來說,幾乎已經是不證自明的標準配備,但事情總有例外:某些情況下,可能連這麼簡單的基本需求都有問題:
- 暫時無法汰換的老舊主機,可能只有很舊很舊的 Python,或者根本沒有預載 Python。
- 講究輕量化、極簡化的 Linux distribution,尤其是嵌入式系統,為了節省空間,常常沒有預載 Python。
如果想將這些系統也納入 Ansible 的管理範圍,我們就要先安裝或升級新一點的 Python 版本進去。
這一課,我們以嵌入式系統、minimal Docker container 領域常見的一套 Alpine Linux 為例,示範如何裝一份 Python 進去,讓它可以進而被 Ansible 所管理。
方法很簡單,只要準備以下這個初始化劇本:
- hosts: all become: true gather_facts: false tasks: - name: Adding Python runtime raw: apk --update add python
透過 Ansible 的 raw module,就能強制灌一份 Python 進去。然後,這台 Alpine Linux 主機,就能乖乖地聽 Ansible 的話。
(影片中是以 maier/alpine-3.3.1-x86_64 這個 Vagrant box 做示範。)
Ansible Role
為了簡化使用方式,我將以上的步驟,以及更多細緻的處理流程,整理成一個 Ansible role:William-Yeh.alpine-python,擺在 Ansible Galaxy 上。
請根據以下的範例檔,自我練習。
0 comments