实现apache访问不同域名得到不同结果
ansible练习题:
安装apache
输入域名为skk.westos.org
得到访问测试页为skk.westos.org
输入域名为linux.westos.org
得到访问测试页为linux.westos.org
输入其他默认域名得到访问测试页为www.westos.org
整体框架
1、建立角色
cd roles
ansible-galaxy init apache
2、设置变量
vim roles/apache/vars/main.yml
---
# vars file for apache
WEBS:
- doc: /var/www/html
index: www.westos.org
- doc: /var/www/vhosts/westos
name: skk.westos.org
index: skk.westos.org
- doc: /var/www/vhosts/linux
name: linux.westos.org
index: linux.westos.org
3、设置jinja2模板
vim roles/apache/templates/vhosts.conf.j2
{% for vhost in WEBS %}
{% if vhost['name'] is not defined %} ##如果域名不存在,则访问默认发布文件
<VirtualHost _default_:80>
{%endif%}
{% if vhost['name'] is defined %} ##如果域名存在,则规定该域名的发布文件
<VirtualHost *:80>
ServerName {{ vhost['name'] }}
{%endif%}
DocumentRoot {{ vhost['doc'] }}
</VirtualHost>
{%endfor%}
4、设置task主任务
vim roles/apache/tasks/main.yml
---
# tasks file for apache
- name: install apache ##安装apache模块
yum:
name: httpd
state: latest
notify: ##触发器
- restart apache
- firewalld
- name: create doc.dir ##创建发布目录
file:
path: "{{ item.doc }}"
state: directory
loop:
"{{WEBS}}"
- name: create index.html ##创建发布文件
copy:
dest: "{{ item.doc }}/index.html"
content: "{{ item.index }}"
loop:
"{{WEBS}}"
- name: vhost ##设置不同域名访问不同发布目录
template:
src: vhosts.conf.j2
dest: /etc/httpd/conf.d/vhost.conf
notify: ##触发器
- restart apache
5、设置触发器
vim roles/apache/handlers/main.yml
---
# handlers file for apache
- name: restart apache ##服务启动模块
service:
name: httpd
state: restarted
enabled: yes
- name: firewalld ##防火墙模块
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
6、设置执行任务
vim httpd.yml
---
- name: install apache
hosts: server3
roles: ##设定角色
- role: apache
7、执行playbook
ansible-playbook --syntax-check httpd.yml
ansible-playbook httpd.yml
8、访问测试
在server1主机上设定地址解析
vim /etc/hosts
分别访问:
访问的显示没有换行问题暂时没有解决,有大佬清楚的话欢迎留言!!