Ansible安裝 入門教程

2022-07-26 21:54:14 字數 3854 閱讀 3915

learn一門新技術咯:

ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。

ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。主要包括:

(1)、連線外掛程式connection plugins:負責和被監控端實現通訊;

(2)、host inventory:指定操作的主機,是乙個配置檔案裡面定義監控的主機;

(3)、各種模組核心模組、command模組、自定義模組;

(4)、借助於外掛程式完成記錄日誌郵件等功能;

(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性執行多個任務。

參考文章:  

# 首先配置一下源 (不必要)

# 安裝

yuminstall -y ansible

usage: ansible [options]

-a module_args # 模組引數

-c, --check #不做任何改變,但是會執行

-f forks, --forks=forks # 用來指定併發

--list-hosts #列出主機列表

-m module_name #模組 名

--syntax-check #語法檢查

-k, --ask-pass #輸入密碼

ssh-keygen

# 生成金鑰對

ssh-copy-id ip位址 # 將金鑰對複製到遠端機器

使用ssh-copy-id批量拷貝公鑰到遠端主機 

vi /etc/ansible/hosts

## 被管理機ip

192.168.14.144

192.168.14.164

192.168.14.165

## 分組 ( 所有, 開發, 資料庫 )

[all]

192.168.14.144

192.168.14.164

192.168.14.165

[web]

192.168.14.144

192.168.14.164

[db]

192.168.14.164

192.168.14.165

差集 『web:!db』

ansible 192.168.14.144 -m ping

###192.168.14.144 | success =>

[root@localhost ~]# ansible all -m ping  # all

192.168.14.165 | success =>

192.168.14.164 | success =>

192.168.14.144 | success =>

ansible 10.0.0.143 -m ping

ansible

10.0.0.143,10.0.0.144 -m ping

ansible all -m ping

ansible web -m ping

ansible web,db -m ping

ansible

"web:&db

" -m ping

ansible

'web:!db

' -m ping

ansible

'web:db

' -m ping

ansible-doc [-l|-f|-s] [options] [-t ] [plugin]

-j json的方式返回模組內容

-l 以列表的形式返回模組內容

-s, --snippet 以片段式的方式顯示模組的幫助資訊

# 直接顯示模組的全部資訊

ansible-doc -l |wc -l 統計ansible提供的模組

ansible 具有冪等性,冪等性能夠保證我們重複的執行一項操作時,得到的結果是相同的,下面詳細介紹一下冪等性的概念。

舉個例子,你想把乙個檔案拷貝到目標主機的某個目錄上,但是你不確定此目錄中是否已經存在此檔案,當你使用 ansible 完成這項任務時,就非常簡單了,因為如果目標主機的對應目錄中已經存在此檔案,那麼 ansible 則不會進行任何操作,如果目標主機的對應目錄中並不存在此檔案,ansible 就會將檔案拷貝到對應目錄中。說白了,ansible 是」以結果為導向的」,我們指定了乙個」目標狀態」,ansible 會自動判斷,」當前狀態」是否與」目標狀態」一致,如果一致,則不進行任何操作,如果不一致,那麼就將」當前狀態」變成」目標狀態」,這就是」冪等性」,」冪等性」可以保證我們重複的執行同一項操作時,得到的結果是一樣的。

現在我們就來實驗一下,看看重複執行相同的 ansible 命令時,會得到什麼效果,如下圖所示:

從上圖可以看出,返回資訊仍然包含」success」字樣,證明 ansible 命令執行成功,不過很明顯,這次的返回資訊為」綠色」,而且細心的你一定發現了,這次綠色的返回資訊中,」changed」 欄位的值為false,而之前黃色的返回資訊中,」changed」 欄位的值為 true。

當返回資訊為綠色時,」changed」 為 false,表示 ansible 沒有進行任何操作,沒有」改變什麼」。

當返回資訊為黃色時,」changed」 為 true,表示 ansible 執行了操作,」當前狀態」已經被 ansible 改變成了」目標狀態」。

這就是冪等性的體現,當第一次執行上述命令時,ansible 發現當前主機中並沒有我們需要的 testfile1檔案,ansible 就會按照我們指定的操作,拉取 testfile1 檔案,也就是說,ansible 「改變」了」當前狀態」,將當前」沒有 testfile1 檔案的狀態」變為了」有 testfile1 檔案的狀態」。當我們再次執行同樣的命令時,ansible 發現對應檔案已經存在於對應目錄中,於是 ansible 並沒有做出任何操作,也沒有進行任何改變,因為」當前狀態」與我們預期的」目標狀態」一致,沒有必要再做出重複的無用功。

看到這裡,你應該已經明白,為什麼執行 ansible 命令時,會返回黃色的成功資訊或者綠色的成功資訊了吧?我們可以通過返回資訊的顏色,更加精準的判斷執行命令之前的狀態是否與我們預期的一致。

從返回資訊中可以看到,當 ansible 進行 fetch 操作時,會對對應檔案進行雜湊計算,算出檔案雜湊值,也就是說,如果我們改變了檔案中的內容,雜湊值也將隨之發生改變,這個時候,即使對應目錄中存在同名的檔案,ansible 也會判斷出兩個檔案屬於不同的檔案,因為它們的雜湊值並不相同,我們來實驗一下,操作如下:

如上圖所示,我們在/testdir/ansible/ansible-demo2/testdir/testfile1檔案的尾部加入乙個」空格」,以改變檔案內容,然後又執行了 fetch 命令,結果發現,ansible-demo2 的返回資訊為黃色,ansible-demo3 主機的返回資訊為綠色,證明 ansible 已經做出了正確的判斷,將修改過的檔案替換為重新拉取的檔案。

PostgreSQL安裝入門教程

一 安裝 首先,安裝postgresql客戶端。sudo apt get install postgresql client 然後,安裝postgresql伺服器。sudo apt get install postgresql 正常情況下,安裝完成後,postgresql伺服器會自動在本機的5432...

ansible 入門教程06 變數

變數的命名要注意,不要使用 而推薦使用 變數可以通過group來定義,也就是定義一些變數給整個組使用,例如 group vars all dbservers 對應的就是我們hosts中定義的組 當然,也可以在playbook中直接定義 當然,我們定義的主要目的還是用使用這些變數 例如,我們在例子中的...

ansible 入門教程04 include

按照官方文件,include就是把一些小的,可以多個play使用的小功能,分別放到單獨的檔案中,使用的時候引用即可,類似我們現在製作 使用的頭部,底部引用,修改的時候修改乙個地方,不需要挨個頁面修改 例如 我們先建立乙個檔案叫 tasks foo.yml 內容如下 name placeholder ...