iT邦幫忙

2021 iThome 鐵人賽

DAY 24
1
DevOps

這個 site 就是遜啦 - SRE 30 天登大人之旅系列 第 24

Day 24:Ansible 的一些設定

昨天簡單介紹完 Ansible 的基本概念了,今天來談談該如何使用 Ansible 來做事吧。

設定

首先第一點是該如何設定 Ansible。我們有很多方法去影響 Ansible 該如何運作,包含透過 ansible.cfg 這個檔案、環境變數或是 CLI 的參數等等...不過若是要實現 IaC (Infrastructure as Code) 的話,把設定寫成檔案並且做版控才是上策,因此我會比較偏好使用 ansible.cfg 來設定。

路徑

Ansible 會嘗試從以下路徑讀取設定(摘自官方文件):

  • ANSIBLE_CONFIG 環境變數(如果有設定的話)
  • ./ansible.cfg
  • ~/.ansible.cfg
  • /etc/ansible/config

Ansible 會依照以上順序去尋找設定檔,需要注意的是,只有第一個找到的設定檔會起作用,而不是合併所有設定。還有一點是,若當前路徑的權限是全域可寫的,那麼 ./ansible.cfg 並不會起作用。

內容

那麼 ansible.cfg 裡面究竟要寫什麼內容呢,它可以提供的選項真的是非常的多,從官方文件可以看到一個超級長的列表,但以我目前的需求,只需要設定 inventory 的路徑即可。

所以 config 長得會像這樣,表示我會以當前路徑的 hosts 這個檔案作為 inventory file。

[defaults]
inventory = hosts

不過其實 inventory 也可以透過 CLI 參數指定就是了,若只有要寫這個的話或許也不是很需要開一個檔案出來。

inventory

inventory 的內容,便是定義 host 相關的資訊,通常為 ini 或是 yaml 格式,以連上 localhost 來說,長得會像這樣。

[local]
localhost ansible_connection=local

檔案可以分成三個部分來看:

  • 首先是第一行的 [local],這個代表 group,可以讓我們替 host 分組,在後續進行操作的時候可以指定要對哪些 managed node 做事。不過這是可以不寫的,每個 host 預設都會被 all 這個群組選到
  • 接下來是第二行前面的 localhost,代表我們的 hostname,他可以是個能夠實際連上的 domain,但也可以做為別名使用(需另外設定實際連線用的 host)。
  • 而在後面的 ansible_connection=local,是指定給這個 host 的變數,像是剛剛提到要指定 host 的話,就可以使用 ansible_host=127.0.0.1 這樣的方式去設定,關於 Ansible 內建的變數,可以參考這個列表

把上面的設定存為 hosts 之後,可以在電腦上面執行看看 ansible local -m command -a 'echo Hello, Ansible!',應該就會看到 Ansible 跟你說 hello 還有 warning了。

上面的 warning 看起來是因為 Ansible 現在是使用 /usr/bin/python 的原因,在 ansible.cfg[defaults] 區段加上 interpreter_python = /usr/bin/python3 就好了。

小結

本來想說今天可以順便把 playbook 的紀錄也寫完的@@,可是還沒寫完就已經要下車了...看來只好明天再補完。


上一篇
Day 23:Ansible 的基本介紹
下一篇
Day 25:Ansible Playbook
系列文
這個 site 就是遜啦 - SRE 30 天登大人之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言