一、roles
Ansible roles是为了层次化、结构化地组织Playbook
roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等
相当于函数的调用把各个功能切割成片段来执行
各部分的作用:
files: | 存放需要同步到异地服务器的源码文件及配置文件; |
---|---|
handlers: | 当资源发生变化时需要进行的操作,若没有此目录可以不建或为空; |
meta: | 存放说明信息、说明角色依赖等信息,可留空; |
tasks: | zabbix安装过程中需要进行执行的任务; |
templates: | 用于执行zabbix安装的模板文件,一般为脚本; |
vars: | 本次安装定义的变量 |
二、环境准备
这是在上次zabbix的基础,各机的免密,devops用户创建,visudo
tab键设置都已完成:
三、角色部署服务
1.创建角色
[devops@server1 roles]$ ansible-galaxy init apache
2.编写task/main.yml
[devops@server1 tasks]$ cat main.yml
---
- name: install apache
yum:
name: httpd
state: present
- name: config apache
template:
src: httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
notify: restart httpd
- name: start apache
service:
name: httpd
state: started
- name: copy index.html
copy:
src: index.html
dest: /var/www/html/index.html
3.编写handlers/main.yml
[devops@server1 handlers]$ cat main.yml
---
- name: restart httpd
service:
name: httpd
state: restarted
4.编写默认发布页面
5.配置templates
1)提前安装httpd:
2)复制配置到指定目录:
3)修改配置文件监听端口
6、定义用到的变量
[devops@server1 vars]$ cat main.yml
---
# vars file for apache
http_host: "{{ ansible_hostname }}"
http_port: 80
7.编写apache.yml
[devops@server1 ansible]$ cat apache.yml
---
- hosts: web
roles:
- apache
查看hosts:
8.推送palybook:
[devops@server1 ansible]$ ansible-playbook apache.yml
发现成功无报错.
在serevr3:
发现服务开启:
监听的端口打开:
在serevr1
可以访问到之前的默认发布页面: