一、ansible模块
script模块
[root@localhost ~]# vim test000.sh
#!/bin/bash
mkdir /tmp/three
touch /tmp/three/test
echo 'i am echo,at mttt' > /tmp/three/test
echo 'well done'
[root@localhost ~]# source test000.sh
well done
[root@localhost ~]# ansible group02 -m script -a './test000.sh'
copy模块
[root@localhost ~]# ansible s -m copy -a 'src=./mysql_master.sh dest=~'
使用command模块下载 nfs-utils rpcbind
[root@localhost ~]# ansible s -m command -a 'yum -y install nfs-utils'
[root@localhost ~]# ansible s -m command -a 'yum -y install rpcbind'
[root@localhost ~]# vim /etc/exports
/static *(ro,sync)
在被控制的主机上添加static目录,并创建test文件
[root@localhost ~]# ansible s -m file -a 'path=/static state=directory'
[root@localhost ~]# ansible s -m file -a 'path=/static/test state=touch
[root@localhost ~]# ansible s -m copy -a 'src=/etc/exports dest=/etc/exports'
command模块
[root@localhost ~]# ansible s -m command -a 'systemctl start nfs'
[root@localhost ~]# ansible s -m command -a 'systemctl enable nfs'
service模块
[root@localhost ~]# ansible s -m service -a 'name=rpcbind state=started enabled=yes'
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# mkdir /nfs
[root@localhost ~]# mount -t nfs 192.168.8.157:/static /nfs/
[root@localhost ~]# ls /nfs/
test
二、playbook
playbook(剧本):是ansible用于配置,部署,和管理被控节点的剧本。用于ansible操作的编排。
一般使用ymal格式
playbook 剧本是保存在控制机的yml文件
YMAL格式
■ 以.yaml或xyml结尾
■ 文件的第一行以” --- “开始,表明YMAL文件的开始(可选的)
■ 以#号开头为注释
■ 列表中的所有成员都开始于相同的缩进级别,并且使用一个"-“作为开头(一个横杠和一个空格)
■ 一个字典是由一个简单的 键:值 的形式组成(这个冒号后面必须是一个空格)
■ 注意:写这种文件可以使用tab键和空格
Playbook常⻅语法
hosts: ⽤于指定要执⾏任务的主机,其可以是⼀个或多个由冒号分 隔主机组.
remote_user: ⽤于指定远程主机上的执行任务的⽤户.
tasks:任务列表,按顺序执行任务.
■ 如果一个host执行task失败,整个tasks都会回滚,修正playbook中的错误,然后重新执行即可.
---
- hosts: 组名/别名/ip/域名
remote_user: root
tasks:
- name: 任务说明
模块: key0=value0
service: name=vsftpd state=started anabled=yes
- name: 修改配置文件
command: sed...
notify:
- ancdef
handler:
- name: abcdef
service name=vsftpd stste=restared
...
三、playbook编排vsftpd
1、安装
[root@localhost ~]# vim test001.yml
---
- hosts: s #使用tab键对齐 指定组
remote_user: root #
tasks:
- name: 安装vsftpd
yum: name=vsftpd state=latest
[root@localhost ~]# ansible-playbook ./test001.yml
2、卸载
[root@localhost ~]# vim test001.yml
---
- hosts: s
remote_user: root
tasks:
- name: 卸载vsftp
yum: name=vsftpd state=absent
- name: 安装vsftpd
yum: name=vsftpd state=latest
[root@localhost ~]# ansible-playbook ./test001.yml
3、启动服务
[root@localhost ~]# vim test001.yml
---
- hosts: s
remote_user: root
tasks:
- name: 卸载vsftp
yum: name=vsftpd state=absent
- name: 安装vsftpd
yum: name=vsftpd state=latest
- name: 启动服务
service: name=vsftpd state=started e
nabled=yes
[root@localhost ~]# ansible-playbook ./test001.yml
4、修改配置文件设置不允许匿名访问并重启
handlers:类似task,但需要使用notify通知调用。
■ 不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次.
■ handlers最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了.
[root@localhost ~]# yum -y install lftp
[root@localhost ~]# lftp 192.168.8.157
lftp 192.168.8.157:~> ls
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
[root@s0 ~]# sed -n '/^anonymous_enable=YES/s/YES/NO/g' /etc/vsftpd/vsftpd.conf
[root@localhost ~]# vim test001.yml
---
- hosts: s
remote_user: root
tasks:
- name: 卸载vsftp
yum: name=vsftpd state=absent
- name: 安装vsftpd
yum: name=vsftpd state=latest
- name: 启动服务
service: name=vsftpd state=started enabled=yes
- name: 修改配置文件
command: sed -i '/^anonymous_enable=YES/s/YES/NO/g' /etc/vsftpd/vsftpd.conf
notify: #调用
- abcdefg
handlers:
- name: abcdefg
service: name=vsftpd state=res
tarted
[root@localhost ~]# ansible-playbook ./test001.yml
[root@localhost ~]# lftp 192.168.8.157
lftp 192.168.8.157:~> exit
[root@localhost ~]# lftp 192.168.8.157
lftp 192.168.8.157:~> ls
中断