分類: Linux學習筆記

RHCE8-淺談Ansible

應該很多人看過這篇文章: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教學文件與影片,會有更多的結果。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料