Ansible模塊
command 模塊
不支持管道符等特殊字符,用于執(zhí)行系統(tǒng)命令,不僅限于linux。和shell模塊差不多。
[root@m01 ~]# ansible web_group -m shell -a 'df -h'
[root@m01 ~]# ansible web_group -m command -a 'df -h'
shell 模塊
用于執(zhí)行命令
[root@m01 ~]# ansible web_group -m shell -a 'df -h'
script 模塊
在本地執(zhí)行的腳本,功能可以同步到其它機(jī)器上面去,被控制機(jī)器不需要腳本。
[root@m01 ~]# ansible web01 -m script -a '/root/a.sh'
yum 模塊
# 查看幫助
[root@m01 ~]# ansible-doc yum
# 安裝httpd
[root@m01 ~]# ansible web_group -m yum -a 'name=httpd state=latest'
[root@m01 ~]# ansible web_group -m yum -a 'name=httpd state=present'
# 一般使用present
# 卸載httpd
absent
[root@m01 ~]# ansible web_group -m yum -a 'name=httpd state=absent'
# 指定網(wǎng)絡(luò)的rpm包
[root@m01 ~]# ansible web_group -m yum -a 'name=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.1-1.el7.x86_64.rpm state=present'
# 類似于
yum -y install https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/SRPMS/zabbix-4.4.1-1.el7.src.rpm
# 在db組安裝nginx,前提是db組上的主機(jī)有本地安裝的包。
[root@m01 ~]# ansible db_group -m yum -a 'name=/root/nginx-1.18.0-1.el7.ngx.x86_64.rpm state=present'
需要掌握的方法
name:
指定安裝的軟件。
可以是本地的也可以是遠(yuǎn)程的鏈接包
state:
prsent 正常安裝,類似于yum -y install
absent 刪除、卸載
lastet 最新版本
yum_repository 模塊
[root@m01 ~]# ansible-doc yum_repository
[root@m01 ~]# ansible web_group -m yum_repository -a 'name=gong description=gong baseurl=zp.gong.com gpgcheck=0 enabled=no'
# web01生成的文件
[root@web01 ~]# cat /etc/yum.repos.d/gong.repo
[gong]
baseurl = zp.gong.com
enabled = 0
gpgcheck = 0
name = gong
# file指的是yum倉庫的文件名,gong是[ ] 里面的內(nèi)容,des是name的內(nèi)容
[root@m01 ~]# ansible web_group -m yum_repository -a 'file=nginx name=gong description=gong baseurl=zp.gong.com gpgcheck=0 enabled=no'
# web01生成的文件
[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo
[gong]
baseurl = zp.gong.com
enabled = 0
gpgcheck = 0
name = gong
# 刪除yum倉庫文件,最好是把文件名和倉庫名都加上,防止誤刪。
[root@m01 ~]# ansible web_group -m yum_repository -a 'file=nginx name=gong state=absent'
# 直接在文件里面添加倉庫,file不變,其它參數(shù)改變就會(huì)加上
[root@m01 ~]# ansible web_group -m yum_repository -a 'file=nginx name=liao description=liao baseurl=tencent.gong.com gpgcheck=0 enabled=yes'
[root@web01 /etc/yum.repos.d]# cat nginx.repo
[xiao]
baseurl = qq.gong.com
enabled = 1
gpgcheck = 0
name = xiao
[liao]
baseurl = tencent.gong.com
enabled = 1
gpgcheck = 0
name = liao
name #指定倉庫名,如果沒有file,則倉庫名為文件名
baseurl #指定yum源
description # yum配置文件中的name
gpgcheck #指定檢查秘鑰,也可用數(shù)字
no
yes
enabled #是否啟用倉庫
no
yes
文件管理模塊
copy 模塊
相當(dāng)于scp
[root@m01 ~]# ansible-doc copy
[root@m01 ~]# ansible web_group -m copy -a 'src=/root/fenfa.sh dest=/root/fenfa_miyue.sh owner=root group=root mode=644'
src # 指定原文件
dest # 指定目標(biāo)位置及文件名,可以改名
owner # 屬主
group # 指定屬組
mode # 指定權(quán)限
[root@m01 ~]# ansible web_group -m copy -a 'src=/root/fenfa.sh dest=/root/fenfa_miyue.sh owner=root group=root mode=644 backup=yes'
backup # 如果原文件變了去覆蓋已經(jīng)有的文件,會(huì)把目標(biāo)機(jī)的文件備份一遍,默認(rèn)不開啟。
[root@web03 ~]# ll
total 16136
-rw-------. 1 root root 1444 Apr 30 20:47 anaconda-ks.cfg
-rw-r--r--. 1 root root 287 May 1 00:05 change_ip.sh
-rw-r--r-- 1 root root 149 Jun 9 09:51 fenfa_miyue.sh
-rw-r--r-- 1 root root 152 Jun 9 09:34 fenfa_miyue.sh.11536.2020-06-09@09:51:56~
# 回滾
[root@m01 ~]# ansible web_group -m copy -a 'src=/root/fenfa_miyue.sh.12398.2020-06-09@09:51:56~ dest=/root/fenfa_miyue.sh remote_src=yes'
remote_src=yes # 是否在遠(yuǎn)端主機(jī)操作
[root@m01 ~]# ansible web_group -m copy -a 'content=gong:123 dest=/root/rsync.pass owner=root group=root mode=600'
content=gong:123 # 把里面的內(nèi)容寫到,目標(biāo)主機(jī)指定文件中。
file 模塊
作用:
- 創(chuàng)建目錄
- 創(chuàng)建文件
- 創(chuàng)建軟鏈接
- 刪除目錄、文件,軟鏈接
# 創(chuàng)建目錄
[root@m01 ~]# ansible all -m file -a 'path=/opt/test owner=root group=root mode=755 state=directory'
path # 指定文件或者目錄
owner # 指定屬主
group # 指定屬組
mode # 指定權(quán)限
src # 做軟、硬鏈接的時(shí)候使用
recurse # 遞歸授權(quán)
yes
no
state:
absent #
touch # 創(chuàng)建文件
directory # 目錄
link # 軟鏈接
hard # 硬連接
file # 配合
# 遞歸授權(quán)
[root@m01 ~]# ansible web_group -m file -a 'path=/website owner=www group=www recurse=yes'
get_url 模塊
[root@m01 ~]# ansible web_group -m get_url -a 'url=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.0-1.el7.x86_64.rpm dest=/tmp mode=0644' -i ./hosts
url #指定下載地址
dest #指定下載的目錄
mode #指定權(quán)限
checksum #校驗(yàn)加密算法
md5
sha256
service 模塊
支持跨平臺(tái)
systemd
僅支持centos7
[root@m01 ~]# ansible web_group -m service -a 'name=crond state=started'
name # 服務(wù)名
state
stopped # 停止服務(wù)
started # 開始服務(wù)
enabled
yes
no
user 模塊
[root@m01 ~]# ansible all -m user -a 'name=john uid=1024 group=root shell=/sbin/nologin create_home=false'
name # 用戶名
uid # 指定uid
group # 指定屬組
shell # 指定解釋器
create_home # 是否創(chuàng)建家目錄
yes
no
comment # 指定注釋 -c
groups # 指定附加組,配合append,如果不加就會(huì)覆蓋-G
append # 附加組 -a
remove # 刪除用戶的時(shí)候,是否同時(shí)刪除家目錄
true,yes # 刪除
flase,no # 不刪除
state
present # 創(chuàng)建
absent # 刪除
generate_ssh_key: 是否創(chuàng)建密鑰對(duì)
yes # 創(chuàng)建
no # 不創(chuàng)建
ssh_key_bits # 指定密鑰的加密長度
ssh_key_file # 指定私鑰文件的位置
system # 是否是系統(tǒng)用戶 -r
yes 是
no 不是
group 模塊
# 添加組
[root@m01 ~]# ansible all -m group -a 'name=xxxx gid=897 state=present'
cron 模塊
# 創(chuàng)建定時(shí)任務(wù)
[root@m01 ~]# ansible all -m cron -a "name='sync time' minute=*/5 job='ntpdate ntp1.aliyun.com &> /dev/null'"
# 效果
[root@web03 ~]# crontab -l
#Ansible: sync time
*/5 * * * * ntpdate ntp1.aliyun.com &> /dev/null
# 刪除定時(shí)任務(wù)
[root@m01 ~]# ansible all -m cron -a "name='sync time' state=absent"
name # 定時(shí)任務(wù)的名字,備注,刪除的時(shí)候是用它來注釋的。
state
present
absent
minute 分0-59
hour 時(shí)0-23
day 日1-31
month 月1-12
weekday 周0-6
mount 模塊
[root@m01 ~]# ansible web_group -m mount -a 'path=/website/wp/wp-content/uploads src=172.16.1.31:/data/wp_data fstype=nfs state=mounted'
path # 掛載到本地的路徑
src # 掛載源
fstype # 掛載的文件系統(tǒng)
nfs
ext4
ext3
state
present # 只寫文件,掛載的東西寫到/etc/fstab
推薦使用 :mounted # 即寫入文件,又掛載
推薦使用 : absent # # 卸載設(shè)備,并清理開機(jī)自動(dòng)掛載文件
unmounted # 只會(huì)卸載,不會(huì)清除/etc/fstab
slinux 模塊
# 關(guān)閉selinux
[root@m01 ~]# ansible all -m selinux -a 'state=disabled'
state
enforcing
permisive
disabled
firewalld 模塊
# 指定服務(wù)的方式去開放
[root@m01 ~]# ansible all -m firewalld -a 'service=httpd permanent=no state=enabled'
[root@m01 ~]# ansible nfs -m firewalld -a 'port=111/tcp permanent=no state=enabled'
service # 需要控制的服務(wù)
port # 需要設(shè)定的端口
permanent # 是否臨時(shí)生效
state # 讓這個(gè)服務(wù)通行,開啟或者關(guān)閉
enabled
disabled
setup 模塊
主機(jī)系統(tǒng)的所有信息
[root@m01 ~]# ansible web01 -m setup
來源:https://www./content-4-723051.html
|