在 ansibleplaybook 中,可以通过 JinJa2 可以生成多虚拟主机配置
目标配置
在实际使用中,需要通过 jinja2 模板生成多虚拟主机配置,希望最后可以生成下面配置
- apache
|
|
- nginx
|
|
初始化 role
通过 ansible-galaxy 生成playbook目录
Apache
添加变量
12345# VhostVhostDomain:- domain: 'www.czero000.com'ServerName: 'www.czero000.com'DocumentRoot: '/home/website/www.czero000.com'编写 jinja2 模板
12345678910111213141516{% for vhost in VhostDomain %}<VirtualHost *:80>ServerAdmin admin.czero000.comDocumentRoot {{ vhost.DocumentRoot }}ServerName {{ vhost.ServerName }}ErrorLog "logs/{{ vhost.ServerName }}-error_log"CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/{{ vhost.ServerName }}_%Y%m%d_log 86400" combined<Directory "{{ vhost.DocumentRoot }}">DirectoryIndex index.html index.phpOptions FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all</Directory></VirtualHost>{% endfor %}编写 task 文件
|
|
- 编写总调度文件,执行 playbook
|
|
Nginx
- 添加变量
在 default/main.yml 中添加变量
- 编写 jinja2 模板
|
|
- 编写 task 文件
|
|
- 编写总调度文件,执行 playbook123456789cat ngingx_conf.yml- name: Dynamic Create Vhost Confhosts: localhostgather_facts: noroles:- nginx_conf// 执行 playbook 生成配置文件ansible-playbook ngingx_conf.yml