Ansible相关工具介绍、实例演示
Ansible相關工具
- /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實現管理的主要方式:
- Ad-Hoc 即利用ansible命令,主要用于臨時命令使用場景
- Ansible-playbook 主要用于長期規劃好的,大型項目的場景,需要有前期的規劃過程
ansible-doc
此工具用來顯示模塊幫助
格式
ansible-doc [options] [module...] -l, --list #列出可用模塊 -s, --snippet #顯示指定模塊的playbook片段范例:
#列出所有模塊 ansible-doc -l #查看指定模塊幫助用法 ansible-doc ping #查看指定模塊幫助用法 ansible-doc -s pingansible
此工具通過ssh協議,實現對遠程主機的配置管理、應用部署、任務執行等功能
建議:使用此工具前,先配置ansible主控端能基于密鑰認證的方式聯系各個被管理節點
范例:利用sshpass批量實現基于key驗證
#!/bin/bash ssh-keygen -f /root/.ssh/id_rsa -P '' NET=192.168.100 export SSHPASS=magedu for IP in {1..200};do sshpass -e ssh-copy-id NET.IP done格式:
ansible <host-pattern> [-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的Host-pattern
用于匹配被控制的主機的列表
All :表示所有Inventory中的所有主機
范例
ansible all –m ping*:通配符
ansible “*” -m ping ansible 192.168.1.* -m ping ansible “srvs” -m ping或關系
ansible “websrvs:appsrvs” -m ping ansible “192.168.1.10:192.168.1.20” -m ping邏輯與
#在websrvs組并且在dbsrvs組中的主機 ansible “websrvs:&dbsrvs” –m ping邏輯非
#在websrvs組,但不在dbsrvs組中的主機 #注意:此處為單引號 ansible ‘websrvs:!dbsrvs’ –m ping綜合邏輯
ansible ‘websrvs:dbsrvs:&appsrvs:!ftpsrvs’ –m ping正則表達式
ansible “websrvs:dbsrvs” –m ping ansible “~(web|db).*\.magedu\.com” –m pingansible命令執行過程
1.加載自己的配置文件 默認/etc/ansible/ansible.cfg
2.加載自己對應的模塊文件,如:command
3.通過ansible將模塊或命令生成對應的臨時py文件,并將該文件傳輸至遠程服務器的對應執行用戶$HOME/.ansible/tmp/ansible-tmp-數字/XXX.PY文件
4.給文件+x執行
5.執行并返回結果
6.刪除臨時py文件,退出
ansible 的執行狀態:
[root@centos8 ~]#grep -A 14 '\[colors\]' /etc/ansible/ansible.cfg [colors] #highlight = white #verbose = blue #warn = bright purple #error = red #debug = dark gray #deprecate = purple #skip = cyan #unreachable = red #ok = green #changed = yellow #diff_add = green #diff_remove = red #diff_lines = cyan- 綠色:執行成功并且不需要做改變的操作
- 黃色:執行成功并且對目標主機做變更
- 紅色:執行失敗
ansible使用范例
#以wang用戶執行ping存活檢測 ansible all -m ping -u wang -k #以wang sudo至root執行ping存活檢測 ansible all -m ping -u wang -k -b #以wang sudo至mage用戶執行ping存活檢測 ansible all -m ping -u wang -k -b --become-user=mage #以wang sudo至root用戶執行ls ansible all -m command -u wang -a 'ls /root' -b --become-user=root -k -Kansible-playbook
此工具用于執行編寫好的 playbook 任務
范例:
ansible-playbook hello.yml cat hello.yml --- #hello world yml file - hosts: websrvsremote_user: root tasks:- name: hello worldcommand: /usr/bin/wall hello worldansible-vault
此工具可以用于加密解密yml文件
格式:
ansible-vault [create|decrypt|edit|encrypt|rekey|view]范例
ansible-vault encrypt hello.yml #加密 ansible-vault decrypt hello.yml #解密 ansible-vault view hello.yml #查看 ansible-vault edit hello.yml #編輯加密文件 ansible-vault rekey hello.yml #修改口令 ansible-vault create new.yml #創建新文件ansible-console
此工具可交互執行命令,支持tab,ansible 2.0+新增
提示符格式:
執行用戶@當前操作的主機組 (當前組的主機數量)[f:并發數]$常用子命令:
- 設置并發數: forks n 例如: forks 10
- 切換組: cd 主機組 例如: cd web
- 列出當前組主機列表: list
- 列出所有的內置命令: ?或help
范例
[root@ansible ~]#ansible-console Welcome to the ansible console. Type help or ? to list commands.root@all (3)[f:5]list 10.0.0.8 10.0.0.7 10.0.0.6 root@all (3)[f:5] cd websrvs root@websrvs (2)[f:5]list 10.0.0.7 10.0.0.8 root@websrvs (2)[f:5] forks 10 root@websrvs (2)[f:10]cd appsrvs root@appsrvs (2)[f:5] yum name=httpd state=present root@appsrvs (2)[f:5]$ service name=httpd state=startedansible-galaxy
此工具會連接 https://galaxy.ansible.com 下載相應的roles
范例:
#列出所有已安裝的galaxy ansible-galaxy list #安裝galaxy ansible-galaxy install geerlingguy.mysql ansible-galaxy install geerlingguy.redis #刪除galaxy ansible-galaxy remove geerlingguy.redis本文鏈接:http://www.yunweipai.com/34643.html
總結
以上是生活随笔為你收集整理的Ansible相关工具介绍、实例演示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ansible 安装和入门
- 下一篇: Ansible常用模块详解