ansible相关说明
2、ansible相關說明
2.1、ansible相關命令
ansible:定義并運行簡單任務,主要執行ad-hoc命令
ansible-config:查看、編輯、管理ansible配置
ansible-connection:
ansible-console:repl控制臺執行ansible任務
ansible-doc:文檔查看工具。控制臺輸入 ansible-doc -h 查看幫助各個參數說明,查看playbook片段使用 ansible-doc -s yum , 詳細說明可以使用 -v -vvv -vvvv 參數
ansible-galaxy:共享和下載roles的工具
ansible-inventory:查看inventory的信息,可以把hosts的ini格式轉成想要的json或者yaml
ansible-playbook:執行playbookansible-pull:從倉庫中拉去playbook
ansible-vault:文件加密工具重點掌握ansible和ansible-playbook命
ansible-pull: 默認使用的是push模式,pull模式相反;適用于數量巨大的機器配置;沒有網絡連接的機器運行
2.2、ansible命令
格式:ansible -m -a
例子:ansible all -m shell -a 'date'
常見可選參數:
-m 模塊名,默認不指定模式時,使用的是command模塊。
-a 針對模塊的具體命令,用單引號包含
-f 并行執行的設備數(默認5)
-o 簡化輸出(一行輸出)
-i 指定 inventory 的路徑(默認為 /etc/ansible/hosts)
-u 執行用戶(默認root)
-P 后臺執行(后跟數字表示隔多少秒輪詢一次,為0表示靜默執行)
-B 最大執行時長(單位秒)
-t 輸出結果重定向
--syntax-check playbook語法檢查,不執行
2.3、ansible主要配置文件
/etc/ansible/ansible.cfg 配置文件,以下是對默認文件修改
# 注意,ansible的執行用戶為普通用戶,因為每個機器都做了sudo,所以ansible.cfg需要設置切換root操作,以下列出修改 [privilege_escalation] # become=True # 取消總是以root執行,需要時加參數切換 become_method=sudo become_user=root become_ask_pass=False # 以下是修改之后的執行效果,注意看輸出 ansible lzcx -m shell -a "whoami" ansible lzcx -m shell -a "whoami" -b/etc/ansible/hosts 主機庫(host inventory)
/etc/ansible/roles/ 公共角色,主要在自動化部署多臺主機時應用
/usr/bin ansible執行命令存放目錄,ansible,ansible-doc,ansible-playbook等等
2.4、inventory介紹
Inventory 文件遵循 ini 文件風格,[] 標記分組,方便對機器列表的管理
inventory 支持配置設置支持 ip,主機名,ip區域,ssh端口,連接類型(默認ssh)和連接用戶,主機變量,添加關鍵字作為配置組變量
靜態 Inventory 指的是在文件中指定的主機和組,動態 Inventory 指通過外部腳本獲取主機列表,并按照 ansible 所要求的格式返回給 ansilbe 命令的。
設置組名時,盡量選擇有意義的名字
以下是hosts文件的幾種配置方法,舉例說明,不一定用在這個實驗環境
2.5、主機列表的執行匹配規則
匹配規則主要有以下幾種
邏輯匹配:全量 all/* 、邏輯或 | 、邏輯非 ! 、邏輯與 & 、切片 []
正則匹配:見下文詳解
以下列舉各種匹配類型
指定主機ip:直接指定ip運行,這里指定包括數字和字母指定
指定主機名:前提是先將ip和主機名添加到系統hosts文件才能識別,將主機名添加到ansible的hosts文件,執行命令檢查是否成功
# 例 echo '192.168.1.214 yuhui' >> /etc/hosts echo 'yuhui' >> /etc/ansible/hosts # 指定主機名 ansible yuhui -m shell -a 'date'指定組名:組名指的是ansible目錄下hosts文件的組名
# 例 ansible centos6 -m shell -a 'date'ansible中正則匹配詳解
匹配所有的主機:all
ansible all -a 'hostname'匹配規則性主機或主機名
# 匹配后綴是 yk 的主機組 ansible *yk -a 'uptime'匹配多個組的主機,中間用 : 隔開(或操作),可匹配多個主機組,格式 group_name:group_name:group_name...
# 匹配 mysql 和 centos6 2個主機組 ansible mysql:centos6 -a 'uptime' # 匹配 mysql、centos6、gzyk 3個主機組 ansible mysql:centos6:gzyk -a 'uptime'在某個組而不在其他組(非操作)
# 匹配在 my_vm 組但不在 centos6 組的主機,注意匹配范圍是用 單引號'' 包含,雙引號會報錯 ansible 'my_vm:!centos6' -a 'hostname'匹配兩個組的交集(與操作)
# 匹配 my_vm 和 centos6 共有的主機 ansible 'my_vm:¢os6' -a 'hostname'匹配一個組的特定主機
# 匹配 my_vm 組內的第二和第三個主機,應用了python的切片 ansible my_vm[1:2] -a 'date'混合匹配
# 匹配 my_vm 和 yuhui組但不包含 centos6 組的主機 ansible 'my_vm:yuhui:!centos6' -a 'date'匹配關鍵字開頭:~
# 匹配 192.168.1.21 開頭的主機 ansible '~192.168.1.21*' -a 'hostname'指定執行 --limit 用法,ansible和ansible-playbook都支持
# 指定 my_vm 組里面的 192.168.1.216 執行 ansible my_vm -a 'hostname' --limit=192.168.1.216 # 用limit指定my_vm組里面的192.168.1.21前綴主機 ansible my_vm -a 'hostname' --limit=192.168.1.21* ansible my_vm -a 'hostname' --limit=~192.168.1.21*轉載于:https://www.cnblogs.com/AutoSmart/p/10272532.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的ansible相关说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识图谱基础知识之四——知识图谱的典型应
- 下一篇: TCP和UDP的优缺点及区别