Playbook中handlers tags使用
# 创建 nginx组,nginx用户,安装 nginx,拷贝配置文件,一旦配置文件发生变化,触发启动服务,发测试信号0看是否服务启动
# 可以选择性地执行tag标签的任务 ansible-playbook -t group nginx.yml
vim /playbook/nginx.yml
- hosts: websrvs
remote_user: root
tasks:
- name: add group nginx
tags: group
group: name=nginx state=present
- name: add user nginx
user: name=nginx state=present group=nginx
- name: Install Nginx
yum: name=nginx state=present
- name: config
copy: src=/root/config.txt dest=/etc/nginx/nginx.conf
notify:
- Restart Nginx
- Check Nginx Process
handlers:
- name: Restart Nginx
service: name=nginx state=restarted enabled=yes
- name: Check Nginx process
shell: killall -0 nginx > /tmp/nginx.log
批量创建类似虚拟主机配置文件
vim /playblook/for.yml
- hosts: websrvs
remote_user: root
vars:
ports:
- web1:
listen_port: 81
name: www.xuepeng.com
root: /data/web1
- web2:
listen_port: 82
name: ftp.xuepeng.com
root: /data/web2
- web3:
listen_port: 83
name: db.xuepeng.com
root: /data/web3
- web4:
listen_port: 84
name: nfs.xuepeng.com
root: /data/web4
tasks:
- name: copy config
template: src=server.conf.j2 dest=/data/server.conf
vim /playblook/templates/server.conf.j2
{%for port in ports%}
server {
listen {{port.listen_port}};
server_name {{port.name}};
root {{port.root}};
}
{%endfor%}
多台主机生成如下文件
批量创建用户,组
---
- hosts: websrvs
remote_user: root
tasks:
- name: create user
group: name={{item}}
with_items:
- group01
- group02
- group03
- name: create user
user: name={{item.name}} group={{item.group}}
with_items:
- { name: zhangsan, group: group01 }
- { name: lisi, group: group02 }
- { name: wangwu, group: group03 }
批量安装软件包
---
- hosts: websrvs
remote_user: root
tasks:
- name: install multi packages
yum: name={{item}} state=present
with_items:
- httpd
- samba
- vsftpd
- dhcp
- autofs
- lsof
- nfs-utils
- rpcbind