1. 程式人生 > >運維自動化之ANSIBLE的簡單使用

運維自動化之ANSIBLE的簡單使用

環境 時間 顯示 pub 命令執行 系列 遠程主機 實驗 特性

實驗主機:
Master:192.168.60.36
Slave1:192.168.60.46
Slave2:192.168.60.56
測試環境做實驗、基於gnome環境安裝的centos7、且關閉了iptables、selinux(iptables -F ;setenforce 0)

rpm包安裝: EPEL源 yum install ansible
rpm -ql
配置文件:
/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性
/etc/ansible/hosts 主機清單
/etc/ansible/roles/ 存放角色的目錄
命令二進制程序:
/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界面與用戶交互的執行工具

Vim /etc/ansible/hosts
技術分享圖片

補充--Ansible 只是一個工具所以改完配置文件立即生效
選擇對46,56的主機進行操作,可以對ansible主機操作,為了效果不加入操作組

Vim /etc/ansible/ansible.cfg

Ansible的配置文件,建議修改下面幾項,自己有需要在自己改
[defaults]
host_key_checking = False #檢查對應服務器的host_key,建議取消註釋不用輸入yes,方便操作
log_path=/var/log/ansible.log #日誌文件、啟用日誌功能
module_name = command #默認模塊

技術分享圖片

技術分享圖片
技術分享圖片

Ansible
支持tab補全的7非常nice

技術分享圖片

ansible <host-pattern> [-m module_name] [-a args]
--version 顯示版本

-m module 指定模塊,默認為command
-v 詳細過程 –vv -vvv更詳細
--list-hosts 顯示主機列表,可簡寫 --list
-k, --ask-pass 提示輸入ssh連接密碼,默認Key驗證
-K, --ask-become-pass 提示輸入sudo時的口令
-C, --check 檢查, 並不執行
-T, --timeout=TIMEOUT 執行命令的超時時間,默認10s
-u, --user=REMOTE_USER 執行遠程執行的用戶
-b, --become 代替舊版的sudo 切換 (授權sudo
--become-user=USERNAME 指定sudo的runas用戶,默認為root
Ansible-doc -l (列出所有模塊
Ansible-doc ping (查看ping模塊的用法

技術分享圖片

ansible websrv -m ping

技術分享圖片

補充--失敗原因是因為,ansible主機之間默認通過ssh鏈接的,沒有輸入密碼,登腿啊
ansible websrv -m ping -k
(我設置的密碼都是相同的方便,自己也可以試試不同密碼

技術分享圖片

Ansible websrv -a ‘tail /etc/passwd’-k

技術分享圖片

補充--前面修改了ansible的配置文件的默認模塊,所以不用 -m shell,可以ansible-doc shell查看怎麽用的,由於每次輸入密碼過於麻煩,且是ssh通信,配了一個key的驗證,方便操作了好多

ssh-keygen (簡單化,默認也是那個算法那個路徑
ll .ssh
ssh-copy-id -I /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id -I /root/.ssh/id_rsa.pub [email protected]

技術分享圖片

技術分享圖片

Ansible websrv -a ‘tail /etc/passwd’
這個操作起來就舒服多了

技術分享圖片

Ansible websrv -a ‘hostname’-u wang -k
兩個主機的wang用戶密碼一樣
技術分享圖片

Ansible websrv -m script -a ‘/root/f1.sh’
使用script模塊直接在遠程主機上,跑本地腳本,ansible-doc script看幫助
技術分享圖片

技術分享圖片

技術分享圖片

補充---模塊超級多ansible-doc -l
技術分享圖片

---以下的模塊都需要好好了解
Copy:從主控端復制文件到遠程主機
Fetch:從遠程主機提取文件至主控端,copy相反,目錄可先tar
File:設置文件屬性 (單個文件
Hostname:管理主機名
Cron:計劃任務(配置chrony主機
Yum:管理包
Service:管理服務
User:管理用戶
Group:管理組

ansible命令執行過程

  1. 加載自己的配置文件 默認/etc/ansible/ansible.cfg
  2. 加載自己對應的模塊文件,如command
  3. 通過ansible將模塊或命令生成對應的臨時py文件,並將該文件傳輸至遠程服務器的對應執行用戶$HOME/.ansible/tmp/ansible-tmp-數字/XXX.PY文件
  4. 給文件+x執行
  5. 執行並返回結果
  6. 刪除臨時py文件,sleep 0退出
    執行狀態: /etc/ansible.cfg
    綠色:執行成功並且不需要做改變的操作
    ×××:執行成功並且對目標主機做變更
    紅色:執行失敗
    ansible的Host-pattern 匹配主機的列表支持通配符和與(:&)或(:)非(:!)

ansible系列命令
ansible-galaxy
--連接 https://galaxy.ansible.com 下載其他作者寫好的roles
ansible-galaxy list 列出所有已安裝的galaxy
ansible-galaxy install geerlingguy.redis 安裝galaxy
ansible-galaxy remove geerlingguy.redis 刪除galaxy

ansible-playbook 執行playbook
示例:ansible-playbook hello.yml (縮進2字符,執行.yml文件
cat hello.yml
#hello world yml file

  • hosts: websrvs (針對主機
    remote_user: root (使用對象
    tasks: (任務
    • name: hello world ( 名字
      command: /usr/bin/wall hello world (執行的命令
      ansible-playbook -C hello.yml (檢查錯誤

ansible-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:2.0+新增,可交互執行命令,支持tab

技術分享圖片

運維自動化之ANSIBLE的簡單使用