常用模块
yum_repository
ansible all -m yum_repository -a "file=myrepo name=myApp description='My App' baseurl=ftp://192.168.88.240/dvd/AppStream gpgcheck=no enabled=yes"
yum模块
-
用于rpm软件包管理,如安装、升级、卸载
-
name:包名
-
state:状态。present表示安装,如果已安装则忽略;latest表示安装或升级到最新版本;absent表示卸载。
ansible webservers -m yum -a "name=tar state=present"
service模块
-
name:控制的服务名
- state:started表示启动;stopped表示关闭;restarted表示重启
- enabled:yes表示设置开机自启;no表示设置开机不要自启。
在test主机上启动nginx,并设置它开机自启[root@pubserver ansible]# ansible webservers -m service -a "name=nginx state=started enabled=yes"
- ansible webservers -m shell -a "ss -ntulp | grep nginx"
- ansible webservers -m shell -a "systemctl is-enabled nging
lvg模块
- vg:定义卷组名。vg:volume group
- pvs:由哪些物理卷构成。pvs:physical volumes
扩容卷组。卷组由PV构成,只要向卷组中加入新的PV,即可实现扩容[root@pubserver ansible]# ansible web1 -m lvg -a "vg=myvg pvs=/dev/vdb1,/dev/vdb2"
lvol模块
- vg:指定在哪个卷组上创建逻辑卷
- lv:创建的逻辑卷名。lv:logical volume
- size:逻辑卷的大小,不写单位,以M为单位
# mylv扩容至4GB
[root@pubserver ansible]# ansible web1 -m lvol -a "vg=myvg lv=mylv size=4G"
filesystem模块
- fstype:指定文件系统类型
- dev:指定要格式化的设备,可以是分区,可以是逻辑卷
ansible web1 -m filesystem -a "fstype=xfs dev=/dev/myvg/mylv"
mount模块
Playbook剧本
ansible 两种执行方法:ad-hoc 一次性命令
- playbook也是通过模块和它的参数,在特定主机上执行任务
- playbook是一个文件,该文件中需要通过yaml格式进行书写
yaml语法规范
- yaml文件的文件名,一般以yml或yaml作为扩展名
- 文件一般以
---
作为第一行,不是必须的,但是常用 - 键值对使用冒号
:
表示,冒号后面必须有空格。 - 数组使用
-
表示,-
后面必须有空格。 - 相同的层级必须有相同的缩进。如果缩进不对,则有语法错误。每一级缩进,建议2个空格。
- 全文不能使用tab,必须使用空格。
[root@pubserver ansible]# vim user_john.yml
---
- name: create user
hosts: webservers
tasks:
- name: create user john
user:
name: john
uid: 1040
group: daemon
password: "{{'123'|password_hash('sha512')}}"
parted模块
-
用于硬盘分区管理
-
常用选项:
- device:待分区的设备
- number:分区编号
- state:present表示创建,absent表示删除
- part_start:分区的起始位置,不写表示从开头
- part_end:表示分区的结束位置,不写表示到结尾