連 Python 都沒有,怎麼辦? (14:38)

之前介紹過,想被 Ansible 管理的主機(以 Ansible 術語來說:managed node),先決條件有二:

  1. 提供 ssh 管道供外界登入控制。
  2. 本身有預載 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 上。

請根據以下的範例檔,自我練習。


下載
Discussion

0 comments