文章目錄
- 管理方式
- 相關工具
- ansible-doc命令
- 用法
- 案例
- ansible
- ansible主配置文件
- 日志文件
- 主機清單
- ansible命令
- 基本格式:
- 選項說明:
- ansible的Host-pattern
- 或關系
- 邏輯與
- 邏輯非
- 正則表達式
- ansible命令執行過程
- ansible 的執行狀態
管理方式
利用ansible實現管理的主要方式:
- Ad-Hoc 即利用ansible命令,主要用于臨時命令使用場景.(一行一行代碼執行)
- Ansible-playbook 主要用于長期規劃好的,大型項目的場景,需要有前期的規劃過程
相關工具
/usr/bin/ansible
主程序,臨時命令執行工具/usr/bin/ansible-doc
查看配置文檔,模塊功能查看工具/usr/bin/ansible-galaxy
下載/上傳優秀代碼或Roles模塊的官網平臺/usr/bin/ansible-playbook
定制自動化任務,編排劇本工具/usr/bin/ansible-pull
遠程執行命令的工具/usr/bin/ansible-vault
文件加密工具/usr/bin/ansible-console
基于Console界面與用戶交互的執行工具
ansible-doc命令
用法
ansible-doc [options] [module...]
-l, --list #列出可用模塊
-s, --snippet #顯示指定模塊的playbook片段
案例
#列出所有模塊
ansible-doc -l
#查看指定模塊幫助用法ansible-doc -s ping
ansible
此工具通過ssh協議,實現對遠程主機的配置管理、應用部署、任務執行等功能
建議:使用此工具前,先配置ansible主控端能基于密鑰認證的方式聯系各個被管理節點
ansible主配置文件
cat /etc/ansible/ansible.cfg
host_key_checking = False 當使用密碼登錄時需要配置此項不然會報錯
日志文件
暫時先將log_path釋放出來:
主機清單
vim /etc/ansible/hosts
用于定義被管理主機的認證信息, 例如被管理主機的主機名或IP地址、ssh登錄用戶名、密碼以及key相關信息。
這里分了兩個組,分別是webservers和dbservers,webservers添加了linux101 linux102兩臺主機,dbservers添加了linux103主機。
ansible命令
基本格式:
ansible <host-pattern> [-m module_name] [-a args]
- :所屬組
- [-m module_name]:模塊
- [-a args] :參數
選項說明:
–version #顯示版本
-m module #指定模塊,默認為command
-v #詳細過程 –vv -vvv更詳細
–list-hosts #顯示主機列表,可簡寫 --list
-k, --ask-pass #提示輸入ssh連接密碼,默認Key驗證
-C, --check #檢查,并不執行
-T, --timeout=TIMEOUT #執行命令的超時時間,默認10s
-u, --user=REMOTE_USER #執行遠程執行的用戶
-b, --become #代替舊版的sudo 切換
–become-user=USERNAME #指定sudo的runas用戶,默認為root
-K, --ask-become-pass #提示輸入sudo時的口令
ansible all -m ping
基于密碼進行驗證(前提:所有主機密碼都相同)
ansible all -k -m ping
ssh-keygen -t dsa
ssh-copy-id 192.168.64.101
基于key驗證
ssh-copy-id linux102
利用sshpass批量實現基于key驗證
vim sshpass.sh
#!/bin/bash
ssh-keygen -f /root/.ssh/id_rsa -P ''
NET=192.168.64
export SSHPASS=123456
for IP in {101..103};dosshpass -e ssh-copy-id $NET.$IP
done
chmod u+x sshpass.sh./sshpass.sh
ansible all --list-host
ansible webservers --list-host
hosts (2):
linux101
linux102
ansible dbservers --list-host
hosts (1):
linux103
如果不是root用戶需要基于key驗證
ansible all -u yu -k -m ping
vim /etc/ansible/hosts
新增一個appservers組,將主機linux101加入
ansible的Host-pattern
用于匹配被控制的主機的列表
All :表示所有Inventory中的所有主機
ansible all –m ping
*:通配符
ansible '*' -m ping
ansible 'linux10*' -m ping
或關系
ansible 'linux101:linux103' -m ping
ansible 'webservers:dbservers' -m ping
邏輯與
ansible 'webservers:&appservers' -m ping
邏輯非
ansible 'webservers:!appservers' -m ping
正則表達式
# web 或 db 開頭的任意主機名
ansible '~(web|db).*' -m ping
ansible命令執行過程
1.加載自己的配置文件 默認/etc/ansible/ansible.cfg
2.加載自己對應的模塊文件,如:command
3.通過ansible將模塊或命令生成對應的臨時py文件,并將該文件傳輸至遠程服務器的對應執行用戶$HOME/.ansible/tmp/ansible-tmp-數字/XXX.PY文件
4.給文件+x執行
5.執行并返回結果
6.刪除臨時py文件,退出
主機列表中的主機沒有下載過ansible,但是還是有.ansible文件目錄
ansible 的執行狀態
綠色:執行成功并且不需要做改變的操作
黃色:執行成功并且對目標主機做變更
紅色:執行失敗