一、构建目录结构
1、新建目录结构
[root@localhost]# mkdir -pv /etc/ansible/roles/service_tomcat/{vars,tasks}
mkdir: 已创建目录 "/etc/ansible/roles/service_tomcat"
mkdir: 已创建目录 "/etc/ansible/roles/service_tomcat/vars"
mkdir: 已创建目录 "/etc/ansible/roles/service_tomcat/tasks"
- defaults 默认寻找路径
- tasks 存放playbooks路径
- files 存放文件和脚本,copy模块文件搜索路径
- templates 模版存放路径
- handlers notify调用部分playbook存放路径
- vars roles内变量存放路径
- 关于这个主目录,建议自建,也可以使用系统默认
- 这里由于简单示范,只创建部分目录,仅供参考。
2、目录结构
[root@localhost service_tomcat]# tree
.
├── tasks
│ ├── main.yml
│ ├── push.yml
│ └── restart.yml
└── vars
其中总调度文件为/etc/ansible/service_tomcat.yml ,vars 目录里可以写一些变量
二、playbook
1、总调度文件service_tomcat.yml
---
- name: 就是想试试tags的用法
hosts: 192.168.1.7
vars:
listen_port: 8410
tomcat_root: /data/qsc_user/car/web
roles:
- { role: service_tomcat }
此处的vars可以转移到vars目录
2、tasks/main.yml
---
- include: restart.yml
tags:
- tag2
- include: push.yml
tags:
- tag1
- 关于tags:主要目的是单独执行指定的tag,使用-t 或者--tags 表示。
- 旧版本不是这样写的,会直接在include后面加上tags=xxx,但是在新版本的ansible执行时虽然不报错,但是也不执行该tag。
3、tasks/restart.yml
---
- name: stop tomcat.
shell: su -c {{ tomcat_root }}/bin/shutdown.sh qsc_user
- name: 验证服务是否关闭
wait_for: port={{ listen_port }} delay=3 state=stopped timeout=10
- name: start tomcat.
shell: su -c {{ tomcat_root}}/bin/startup.sh qsc_user
- name: 等待服务启动
wait_for: port={{ listen_port }} delay=5 timeout=30
- name: tags 测试正常
shell: echo "hello "
4、执行
[root@localhost ansible]# ansible-playbook service_tomcat.yml --tags tag2 -vvv
这样这个小项目就完成啦。