應該很多人看過這篇文章:RHCE(紅帽認證工程師)考照心得
然而,紅帽企業Linux出8之後,RHCE也改版了,結果,整個就跟7版不一樣了。
其實我不討厭他,然而因為寫程式是我的罩門,所以對我來說,不靠書來寫並不容易。
Ansible的原理是甚麼?
我舉個簡單的例子,有沒有裝過100台的電腦教室電腦?
如果以傳統的方式安裝該有的軟體,就算是寫批次檔,但光是要把檔案全部複製並執行,相信我,要花上一天甚至更久的時間才能完成(主要是因為一次只能做一台或幾台,效率慢到不行),然而,如果用Ansible來執行的話,效率差很多,因為從主控端來請被控端執行命令,這麼一來,原本要一天甚至更久時間需要完成的工作,就可以把時間縮短,因為他支援多台執行(全部一起執行)或分批執行(假設一次先執行10台,然後再分10台,以此類推),這樣一來,把一次執行一台還要有效率多了。
你可以用一台Server(Linux、mac(用homebrew)或適用於Linux的Windows子系統(WSL2)來安裝)來做為主控端,並設定一組inventory,來設定要控制電腦的名單,以下是範例與連接方法:
而Inventory的寫法:
第一種寫法:
clienta.example.com
clientb.example.com
clientc.example.com
clientd.example.com
第二種寫法(分組):
[mac]
clientb.example.com
[windows]
clientd.example.com
[FreeBSD]
clientc.example.com
[RedHat]
clienta.example.com
[unix:children]
RedHat
FreeBSD
mac
第三種寫法(區間):
[unix]
client[a:c].example.com
還要寫一個ansible.cfg,最後就可以利用Modules(例如:raw、command、yum)和Roles(角色,用ansible-galaxy安裝)來用ansible執行或寫一個playbook(劇本)再用ansible-playbook來執行。
這麼一來,就可以達成無人自動化,因為所需要的東西,系統預設就有了(SSH(Unix、Linux)或WinRM(Windows))。
然而,最恐怖的是playbook,因為它是yaml的寫法,要寫並不容易,但RHCE改版之後,改考這個,對我這個沒甚麼寫程式的人來說,這是一個罩門,只好去上課了。
如果很有興趣,可以去網路上找看看資料!
然而,當你會這套工具之後,你部屬電腦就會輕鬆簡單許多。
這邊簡單秀一個程式來給大家瞭解一下:
---
- name: Install Packages #劇本名稱
hosts: #要執行的電腦名稱(要有在inventory裡面)或群組
- mac
- clientd.example.com
- prod
vars_files: #如果有變數檔案,也可以包進去
- test.yml
tasks: #執行的工作
- name: Install packages #工作名稱
#以下部分等同yum install php mariadb -y
yum:
name:
- php
- mariadb
state: present
- name: Create User #工作名稱
#以下部分等同useradd 下面變數
user:
name: "{{ item.name }}" #從users變數呼叫name變數
groups: test #使用test群組
loop: "{{ users }}" #呼叫users變數
when: "'gp1'== item.gp" #只有gp為gp1才會建立使用者
test.yml程式:
users:
- name: test
gp: gp1
- name: test1
gp: gp2
- name: test3
gp: gp2
因為筆者學的還只是皮毛,如果有興趣,可以到網路上找尋Ansible教學文件與影片,會有更多的結果。