文章目錄
- 一、ansible——自動化運維工具
- 1、Ansible 自動運維工具特點
- 2、Ansible 運維工具原理
- 二、安裝ansible
- 三、ansible命令模塊
- 1、command模塊
- 2、cron模塊
- 3、user模塊
- 4、group模塊
- 5、copy模塊
- 6、file模塊
- 7、ping模塊
- 8、service模塊
- 9、shell模塊
- 10、script模塊
- 11、yum模塊
- 12、setup模塊
一、ansible——自動化運維工具
1、Ansible 自動運維工具特點
Ansible 與 Saltstack 均是基于 Python 語言開發,Ansible 只需要在一臺普通的服務器上運行即可,不需要在客戶端服務器上安裝客戶端,因為 Ansible 是基于 SSH 遠程管理,而Linux服務器大都離不開SSH,所以Ansible不需要為配置作業添加額外的支持,
Ansible 安裝使用非常簡單,而且基于上千個插件和模塊實作各種軟體、平臺、版本的管理,支持虛擬容器多層級的部署,很多讀者在使用 Ansible 工具時,認為 Ansible比 Saltstatck 執行效率慢,其實不是軟體本身慢,是由于 SSH 服務慢,可以優化 SSH 連接速度及使用 Ansible 加速模塊,滿足企業上萬臺服務器的維護和管理,
2、Ansible 運維工具原理
Ansible分為控制端和被控端,主要是基于SSH協議去管理客戶端,被控端是無需安裝Agent插件的,Ansible會讀取控制端hosts檔案,根據檔案中定義IP串列資訊,調取本地的各個模塊對被控端機器實作批量、并發的配置管理和維護,如果任務比較復雜可以寫成PlayBook劇本進行分發管理;
Ansible 自動運維管理工具優點:
? 輕量級,更新時,只需要在操作機上進行一次更新即可;
? 采用 SSH 協議;
? 不需要去客戶端安裝 agent;
? 批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行;
? 使用 python 撰寫的,維護更簡單;
? 支持 sudo 普通用戶命令;
? 去中心化管理,
二、安裝ansible
#192.168.184.10
hostname ansible
su -
#192.168.184.20
hostname webserver
su -
#192.168.184.30
hostname mysql
su -
systemctl stop firewalld
setenforce 0

#安裝epel擴展源
yum -y install epel-release
yum -y install ansible

#樹型查詢工具
yum -y install tree
tree /etc/ansible

vim /etc/ansible/hosts
#配置主機清單
[webserver]
192.168.184.20
[mysql]
192.168.184.30

#生成密鑰對
ssh-keygen -t rsa
123123
123123
ssh-copy-id root@192.168.184.20
ssh-copy-id root@192.168.184.30


#每次查詢都需要輸入密鑰
#可以使用ssh-agent代理
ssh-agent bash
ssh-add
123123
ansible webserver -m command -a 'date'

三、ansible命令模塊
1、command模塊
命令格式:ansible [主機] [-m 模塊] [-a args]
#列出所有已安裝的模塊,按q退出
ansible-doc -l
#所有主機執行data命令,其中all可以換成IP或者分類名稱,例:192.168.184.20 / webserver
ansible all -m command -a 'date'
#不加-m模塊,則默認使用command模塊
ansible all -a 'date'
ansible all -a 'ls /root'

2、cron模塊
兩種狀態(state):present表示添加(可以省略),absent表示移除
#查看cron模塊資訊
ansible-doc -s cron
#webserver:分類 -m指定模塊 -a輸出模塊內的指令 分鐘:每分鐘,作業:輸出hello,作業名稱:test
ansible webserver -m cron -a 'minute="*/1" job="/usr/bin/echo hello" name="test"'
#查看計劃性任務命令
ansible webserver -a 'crontab -l'
#移除計劃性任務
ansible webserver -m cron -a 'name="test" state=absent'

3、user模塊
user模塊是請求三條指令,useradd,userdel,usermod
#模塊資訊
ansible-doc -s user
#創建用戶
ansible all -m user -a 'name=zhangsan'
#查看用戶賬戶資訊
ansible all -m 'command' -a 'tail -1 /etc/passwd'
#移除指令
ansible all -m user -a 'name="zhangsan" state=absent'


4、group模塊
group模塊請求的是groupadd、groupdel、groupmod模塊
#查看模塊資訊
ansible-doc -s group
#system=yes 創建系統組
ansible mysql -m group -a 'name=mysql gid=1111 system=yes'
#查看組賬戶資訊
ansible mysql -a 'tail -1 /etc/group'
#創建用戶并加入組
ansible mysql -m user -a 'name=zhangsan uid=1234 group=mysql system=yes'
#查看用戶test02的用戶id和組id資訊
ansible mysql -a 'id zhangsan'


5、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="hello lic" dest=/opt/test.txt'
ansible mysql -a 'cat /opt/test.txt'


6、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'




7、ping模塊
ansible all -m ping

8、service模塊
ansible-doc -s service
#192.168.184.20執行
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


9、shell模塊
ansible-doc -s shell
ansible mysql -m user -a 'name=zhangsan'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin zhangsan'
10、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'



11、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'


12、setup模塊
ansible-doc -s setup
#獲取MySQL組主機的facts資訊
ansible mysql -m setup
Ansible facts 是遠程系統的資訊,主要包含IP地址,作業系統,以太網設備,mac 地址,時間/日期相關資料,硬體資訊等資訊,
/etc/ansible/hosts
是ansible默認主機清單
如果名稱類似的主機,可以使用串列的方式標識各個主機[webserver]
www[01:50].example.org ansible_ssh_user=root ansible_ssh_pass=123123
表示www01.example.org~www50.example.org的主機,ssh登陸用戶為root,密碼為123123
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/273630.html
標籤:其他
