1,什麼是Ansible
Ansible 是 python 中的一套模塊,系統中的一套自動化工具,只需要使用 ssh 協議連接及可用來系統管理、自動化執行命令等任務。
2,爲什麼要用Ansible
- 可以實現批量系統操作配置
- 可以實現批量軟件服務部署
- 可以實現批量文件數據分發
- 可以實現批量系統信息收集
3,使用Ansible的意義
- 提高工作的效率(部署綜合架構)
- 提高工作準確度
- 減少維護的成本
- 減少重複性工作
4,安裝部署
- 沒有配置文件(不需要配置)
- 不需要啓動服務
- 客戶端沒有需要部署任務
5,安裝Ansible
yum -y install ansible
6,學習ansible主機清單
vi /etc/ansible/hosts
在上一單元SSH優化部分我們已經改變了端口,採用密鑰登錄,所以這裏這樣寫反之,正常寫
7,學習Ansible模塊調用
首先就是要先打通ssh遠程功能,ansible是建立在ssh通訊上實現的批量管理
1)ping模塊
ansible 主機組名 -m 模塊名
ansible nfs -m ping 調用ping模塊
2)約等於萬能模塊shell (忘記這個命令吧,ansible支持2843個模塊,每個命令都有自己的專門模塊,不要都用shell來代替)
ansible nfs -m shell -a "各種命令"
8,yaml語法,這類語法調用模塊更加細緻,有更多的參數,有個一很大的有點就是不會重複執行,比如你在管理端對100臺客戶機執行腳本
中間報錯了,可以直接再次執行而不報錯 (ansible劇本)
特點:1)以縮進代表不同層級之間的關係
2)對索引有嚴格要求
1)file模塊(每個模塊的具體參數都在官方文檔裏有要自己會讀https://docs.ansible.com/ansible/latest/modules)
ansible nfs -m file -a "path=/tmp/oldboy state=directory mode=644 owner=oldboy group=oldboy"
2)copy模塊
ansible nfs -m copy -a "src=/etc/ssh/sshd_config dest=/tmp/ mode='644'"
3)script腳本模塊
ansible nfs -m script -a "/server/scripts/xx.sh"
4)user用戶模塊(創建www用戶和組uid和gid等於666,描述爲oldboy,沒有家目錄,/sbin/nologin)
ansible nfs -m group -a "name=www gid=666"
ansible nfs -m user -a "name=www uid=666 comment=oldboy shell=/sbin/nologin create home=no"
5)cron模塊
ansible nfs -m cron -a 'name="ntpdate" minute="*/5" job="ntpdate time1.aliyun.com"'
6)yum模塊
ansible nfs -m yum -a "name=ntpdate state=lastest"
例1:搭建NFS服務
NFS服務端:
#!/bin/bash
ansible nfs -m group -a "name=www gid=666 state=present"
ansible nfs -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"
ansible nfs -m yum -a "name=nfs-utils"
ansible nfs -m file -a "path=/data state=directory"
ansible nfs -m copy -a "src=exports dest=/etc/exports backup=yes"
ansible nfs -m service -a "name=rpcbind state=started enabled=yes"
ansible nfs -m service -a "name=nfs state=started enabled=yes"
ansible nfs -m shell -a "showmount -e"
NFS客戶端:
#!/bin/bash
ansible nfs_client -m group -a "name=www gid=666 state=present"
ansible nfs_client -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"
ansible nfs_client -m yum -a "name=nfs-utils"
ansible nfs_client -m file -a "path=/data state=directory"
ansible nfs_client -m service -a "name=rpcbind state=started enabled=yes"
ansible nfs_client -m shell -a "showmount -e 172.16.1.31"
ansible nfs_client -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted"