昨天差不多講完這幾天的目標了,今天就來簡單介紹 Ansible 這套自動化工具吧。順便幫我爭取一點寫 code 的時間。
首先是如何安裝,話說我本來是想找找 Ansible 有沒有官方的 docker image,結果翻了一下好像沒看到,ansible/ansible 已經 4 年沒更新了。
那麼就乖乖在本機上面安裝吧,透過 pip
就可以了。
pip install ansible
不過需要注意的是若是本來就有安裝舊版本的話,這樣直接安裝會出錯,需要先刪掉舊的 Ansible,具體的步驟可以參考官方文件,有比較完整的描述。
接下來談談 Ansible 的基本概念,我們需要 Ansible 的場景通常是要在一些機器上面去執行一些任務,像是修改一些 config、安裝套件等等。這種時候,我們下 ansible
或是 ansible-playbook
指令的電腦就被稱為 control node。然後 Ansible 不能使用 Windows 機器作為 control node,並且我們可以有多個 control node。
關於更多有關 Windows 的限制,可以參考官方的 Windows Guide。
而相對於 control node,就是我們具體要執行任務的那些機器,這些機器稱為 managed node,有時候也稱做 hosts,在這些機器上面並不需要安裝 Ansible,但是至少要確保可以從 control node 透過 SSH 連上 managed node,才能在上面執行指令,另外也需要開 SFTP,因為 Ansible 預設是使用 SFTP 傳遞檔案的(或是可以透過設定改成 SCP),最後一點就是,需要安裝 Python。
更詳細的資訊,可以參閱官方的 Managed node requirements
接下來,使用 Ansible 的時候我們通常會把需要操作的 managed node 們的連線資訊(IP、ssh key 路徑等)寫成一個檔案,稱做 inventory。
我們在 Ansible 中執行的最小單位稱做 task,並且可以使用 playbook 來管理一整組 task,有點類似 command 跟 shell script 的關係,但是 playbook 並不只是把 task 單純綁在一起,還會提供一些機制幫助我們更好去管理 task。
今天簡單的寫了一下 Ansible 的基本知識,明天再來多講一些有關 inventory 和 playbook 的部分吧。