運維自動化之ANSIBLE的簡單使用
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-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 顯示版本
-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命令執行過程
- 加載自己的配置文件 默認/etc/ansible/ansible.cfg
- 加載自己對應的模塊文件,如command
- 通過ansible將模塊或命令生成對應的臨時py文件,並將該文件傳輸至遠程服務器的對應執行用戶$HOME/.ansible/tmp/ansible-tmp-數字/XXX.PY文件
- 給文件+x執行
- 執行並返回結果
- 刪除臨時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 (檢查錯誤
- name: hello world ( 名字
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的簡單使用