ansible自動化運維
- 一、ansible簡介
- 二、ansible環境安裝和部署
- 環境準備
- 免互動代理
- ansible命令列模塊
- command模塊
- cron模塊
- user模塊
- group模塊
- copy模塊
- file模塊
- ping模塊
- service模塊
- shell模塊
- script模塊
- yum模塊
- setup模塊
一、ansible簡介
1.Ansible可以同時管理Redhat系的Linux,Debian系的Linux,以及Windows主機,管理節點只在執行腳本時與遠程主機連接,沒有特別的同步機制,所以斷電等例外一般不會影響ansbile,

2.ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實作了批量系統配置、批量程式部署、批量運行命令等功能,ansible是基于模塊作業的,本身沒有批量部署的能力,真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架,主要包括:
(1)、連接插件connection plugins:負責和被監控端實作通信;
(2)、host inventory:指定操作的主機,是一個組態檔里面定義監控的主機;
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、借助于插件完成記錄日志郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務,
3.ansible的架構:連接其他主機默認使用ssh協議

二、ansible環境安裝和部署
環境準備
管理端:192.168.177.33
被管理端:192.168 .177.8
被管理端:192.168.177.18
yum install -y epel-release #安裝epel源
yum install ansible -y
ansible --version
yum install tree -y
tree /etc/ansible/ #樹狀結構展示檔案夾
/etc/ansible/
|—— ansible.cfg #ansible的組態檔
|—— hosts #ansible的主倉庫,用于存盤需要管理的遠程主機的相關資訊
|—— roles #角色


cd /etc/ansible
vi hosts #配置主機清單
[webserver]
192.168.177.8
[mysql]
192.168.177.18

ssh-keygen -t rsa
ssh-copy-id root@192.168.177.8
ssh-copy-id root@192.168.177.18 #配置密鑰對驗證


免互動代理
ssh-agent bash
ssh-add
ansible命令列模塊
command模塊
命令格式:ansible [主機] [-m 模塊] [-a args]
ansible-doc -l #列出所有已安裝的模塊 按q退出
ansible-doc -s yum #-s列出yum模塊描述資訊和操作動作
ansible 192.168.177.8 -m command -a 'date' #指定ip執行date
ansible webserver -m command -a 'date' #指定分類執行date
ansible mysql -m command -a 'date'
ansible all -m command -a 'date' #所有hosts主機執行date命令
ansible all -a 'ls /' #如果不加-m模塊,則默認運行command模塊



cron模塊
兩種狀態(state):present表示添加(可以省略),absent表示移除,
ansible-doc -s cron #查看cron模塊資訊
ansible webserver -m cron -a 'minute="*/1" job="/usr/bin/echo yoyoyo >> /opt/info.txt" name="test cron job" '
ansible webserver -a 'crontab -l'
ansible webserver -m cron -a 'name="test cron job" state=absent' #移除計劃任務,加入該計劃沒有取名字,name=None即可




user模塊
user模塊是請求的是useradd,userdel,usermod三個指令
ansible-doc -s user
ansible mysql -m user -a 'name="test01" ' #創建用戶test01
ansible mysql -m command -a 'tail /etc/passwd'
ansible mysql -m user -a 'name="test01" state=absent' #洗掉用戶test01



group模塊
group模塊請求的是groupadd,groupdel,groupmod三個指令
ansible-doc -s group
ansible mysql -m group -a 'name=mysql gid=306 system=yes'
ansible mysql -a 'tail /etc/group'
ansible mysql -m user -a 'name=tefuir uid=306 system=yes group=mysql'
ansible mysql -a 'tail /etc/passwd'
ansible mysql -a 'id tefuir'


copy模塊
ansible-doc -s copy
ansible mysql -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'
ansible mysql -a 'ls /opt'
ansible mysql -a 'cat /opt/fstab.back'
ansible mysql -m copy -a 'content="edg champion " dest=/opt/test.txt'
ansible mysql -a 'cat /opt/test.txt'


file模塊
ansible-doc -s file
ansible mysql -m user -a 'name=mysql system=yes'
ansible mysql -m file -a 'owner=mysql group=mysql mode=600 path=/opt/test.txt'
ansible mysql -a 'ls -l /opt/test.txt'
#創建
#ansible mysql -m file -a 'path=/opt/abc.txt state=touch'
ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
ansible mysql -a 'ls -l /opt'
#移除檔案/opt/test.txt
ansible mysql -m file -a 'path=/opt/test.txt state=absent'




ping模塊
ansible all -m ping

service模塊
ansible-doc -s service
#192.168.177.8執行
yum -y install httpd

ansible webserver -a 'systemctl status httpd'
ansible webserver -m service -a 'enabled=true name=httpd state=started'

systemctl status httpd
systemctl is-enabled httpd

shell模塊
ansible-doc -s shell
ansible mysql -m user -a 'name=zhangsan'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin zhangsan'
script模塊
ansible-doc -s script
vim test.sh
#!/bin/bash
echo 'hello ansible from script' > /opt/script.txt
chmod +x test.sh
ansible all -m script -a 'test.sh'





yum模塊
ansible-doc -s yum
ansible mysql -m yum -a 'name=httpd'
ansible mysql -a 'rpm -q httpd'
ansible mysql -m yum -a 'name=httpd state=absent'
ansible mysql -a 'rpm -q httpd'



setup模塊
ansible-doc -s setup
#獲取MySQL組主機的facts資訊
ansible mysql -m setup
Ansible facts 是遠程系統的資訊,主要包含IP地址,作業系統,以太網設備,mac 地址,時間/日期相關資料,硬體資訊等資訊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274149.html
標籤:其他
