Ansible常用模組詳解
Ansible可以使用命令列方式進行自動化管理,且ansible的命令列管理工具都是由一系列模組、引數支援的,我們可以通過ansible-doc工具檢視模組幫助資訊。本篇博文將詳細講述ansible模組功能及操作。
Ansible命令引數:
- -v:輸出詳細資訊(可以使用多個v)
- -i PATH:指定hosts檔案位置
- -f NUM :指定開啟的程序數(預設為5)
- -m MOULE :指定module的名稱(預設為command)
- -m DIRECTORY:指定module的目錄來載入module,預設是/usr/share/ansible
- -a,MODULE_ARGS:指定module模組的引數
- -k:提示輸入ssh的密碼,而不是使用基於ssh的金鑰認證
- -u USERNAME:指定移動端的執行使用者
Ansible模組:
1、command模組
命令:ansible [主機] [-m 模組] [-a args]
ansible-doc -l #列出所有安裝模組(q退出)
ansible-doc -s yum #列出yum模組描述資訊和操作動作
ansible all -m command -a 'date' #查詢date
ansible all -a 'ls /' #如果不加-m模組,預設執行command模組
2、cron模組
兩種狀態(state):present表示新增 absent 表示移除 ansible-doc -s cron #檢視cron模組資訊 ansible all -m cron -a 'minute="*/1" job="/usr/bin/echo heihei >> /opt/test.txt" name="test cron"' #-a: 指定新增引數 */1:每分鐘執行 job:執行內容
ansible mysql -a 'crontab -l' #檢視crontab資訊
ansible mysql -m cron -a 'name="test cron" state=absent'
3、user模組
ansible-doc -s user
ansible all -m user -a 'name=test' #建立使用者
操作成功後,到被管理伺服器上檢視結果:
ansible mysql -m command -a 'tail /etc/passwd'
ansible mysql -m user -a 'name=test01 state=absent' #刪除使用者
操作成功後,到mysql伺服器上檢視結果:
4、group模組
ansible mysql -m group -a 'name=mysql gid=330 system=yes'
ansible mysql -a 'tail /etc/group'
ansible mysql -m user -a 'name=test02 uid=330 group=mysql system=yes'
#新建使用者test02;設定UID=306;將test02新增到mysql組
ansible mysql -a 'id test02'
5、copy模組
ansible-doc -s copy
ansible all -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=644'
#src:原檔案 dest:複製後目標檔案 owner:屬主 mode:許可權
ansible mysql -a 'ls -l /opt' #在控制主機上檢視
操作成功後,到被管理伺服器上相應目錄下檢視結果:
ansible mysql -m copy -a 'content="hello world!" dest=/opt/hello.txt'
#複製檔案hello.txt中寫入“hello world!”
ansible mysql -a 'cat /opt/test.txt' #在控制主機上檢視
操作成功後,到mysql伺服器上相應目錄下檢視結果:
6、file模組
ansible-doc -s file
touch /opt/file.txt
ansible mysql -m file -a 'path=/opt/file.txt owner=test02 group=mysql mode=666'
#對test檔案設定屬主、屬組、許可權
操作完成後,到mysql伺服器下檢查結果:
ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
#將src指的檔案連結到path指的路徑下
操作完成後,到mysql伺服器相應目錄下檢查結果:
當然,也可以建立空檔案,操作相對簡單
ansible mysql -m file -a 'path=/opt/abc.txt state=touch' #建立空檔案
ansible mysql -m file -a 'path=/opt/abc.txt state=absent' #刪除
7、ping模組
//測試被管理主機是否線上
ansible all -m ping
8、yum模組
ansible-doc -s yum
ansible webserver -m yum -a 'name=httpd' #安裝httpd
ansible webserver -m yum -a 'name=httpd state=absent' #移除httpd
9、shell模組
ansible-doc -s shell
ansible webserver -m user -a 'name=jerry'
ansible webserver -m shell -a 'echo abc123 | passwd --stdin jerry'
#建立使用者,免互動設定密碼
10、script模組
在自己伺服器設定指令碼,其他伺服器去執行
ansible-doc -s script
#!/bin/bash
echo "this is test script" > /opt/script.txt
chmod 666 /opt/script.txt #設定許可權
chmod +x test.sh #為指令碼新增執行許可權
ansible all -m script -a 'test.sh'
操作完成後,到被管理伺服器上檢視執行結果:
11、setup模組
ansible-doc -s setup
ansible mysql -m setup #檢視mysql伺服器上所有資訊
12、service模組
ansible-doc -s service
ansible webserver -m service -a 'name=httpd enabled=true state=started'
#開啟httpd服務 ; enabled:開機自啟動
ansible webserver -m service -a 'name=httpd enabled=true state=stopped' #關閉httpd服務