[原创]实战之Ansible生成Apache多主机配置
Posted 运维部落
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[原创]实战之Ansible生成Apache多主机配置相关的知识,希望对你有一定的参考价值。
本篇文章是由我们Ansible中文官方推出的:playbook编写技巧系统文章,前几节的文章有《[原创]其实playbook的代码可以这么简洁》、《[原创]巧用Roles优化playbook代码》、《[原创]Roles的高级玩法,带你玩转自动化》、《[原创]Roles技巧之Templates》、《[原创]Jinja2的条件判断高级使用》、《[原创]实战之Ansible生成nginx的配置》,以上文章具有连贯性,如果有需要,还请各位读者查阅
Ansible结合Jinja2生成Apache多主机配置
上篇《[原创]实战之Ansible生成Nginx的配置》为大家介绍了Nginx配置的生成,本节为大家介绍Apache 多主机配置的生成。因本节不涉及新知识点,以纯实践为主,考虑篇幅,我们尽可以简洁明了的介绍本节,以下是配置示例
一、案例场景说明:
通过Ansible的Jinja模板生成如下的Apache多主机配置,最终实现如下配置:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName apache.magedu.com
DocumentRoot /data/magedu/
<Directory "/data/magedu/">
AllowOverride All
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName apache.magedu.otherdomain.com
DocumentRoot /data/otherdomain/
ServerAdmin stanley@magedu.com
<Directory "/data/otherdomain/">
AllowOverride All
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
二、案例场景实现:
步骤1:编排目录结构如下:
roles/apacheconf/ ├── tasks │ ├── file.yml │ └── main.yml ├── templates │ └── apache.conf.j2 └── vars └── main.yml
步骤2:编辑apacheconf role的tasks调度文件 roles/apacheconf/tasks/{file.yml,main.yml}
编辑file.yml,内容如下:
\--- #此处"\"是为了转义,各位读者可以忽略 - name: Apache.conf.j2 tempalte transfer example template: src=apache.conf.j2 dest=/etc/httpd/apache.conf.template
\--- #此处"\"是为了转义,各位读者可以忽略 - include: file.yml
编辑main.yml,内容如下:
步骤3:定义apacheconf role的模板文件roles/apacheconf/templates/apache.conf.j2,内容如下:
NameVirtualHost *:80 {% for vhost in apache_vhosts %} <VirtualHost *:80> ServerName {{ vhost.servername }} DocumentRoot {{ vhost.documentroot }} {% if vhost.serveradmin is defined %} ServerAdmin {{ vhost.serveradmin }} {% endif %} <Directory "{{ vhost.documentroot }}"> AllowOverride All Options -Indexes FollowSymLinks Order allow,deny Allow from all </Directory> </VirtualHost> {% endfor %}
步骤4:编辑apacheconf role的变量文件roles/apacheconf/vars/main.yml:
\--- #此处"\"是为了转义,各位读者可以忽略 apache_vhosts: - {servername: "apache.magedu.com", documentroot: "/data/magedu/"} - {servername: "apache.magedu.otherdomain.com", documentroot: "/data/otherdomain/", serveradmin: "stanley@magedu.com"}
步骤5:编辑总调度文件apacheconf.yml:
- name: Apache WebServer's Conf Dynamic Create hosts: 192.168.37.159 gather_facts: no roles: - { role: apacheconf }
步骤6 验证结果:
执行命令:
ansible-playbook apacheconf.yml
后登录到192.168.37.159查看/etc/httpd/apache.conf.template 是否和我们预期的一样。
今天的分享就到这里结束了,如果大家在学习的过程中有问题,可以添加Ansible官方QQ群或关注微信公众号参加讨论。我们将在明天的分享中为大家带来《6.3.7 Jinja2动态变量配置及架构优化》,还请各位读者持续关注!
关注我们:
以上是关于[原创]实战之Ansible生成Apache多主机配置的主要内容,如果未能解决你的问题,请参考以下文章