У меня есть playbook, который вызывает роль и должен импортировать переменные apache для веб-сайтов. Проблема в том, что когда я заглядываю в ports.conf, я вижу только строку для website1. Website2 никогда не вызывается. Любая помощь будет принята с благодарностью.
---
- hosts: all
vars_files:
- [ "./roles/apache-vhost/vars/website1.yml", "./roles/apache-vhost/vars/website12.yml"]
roles:
- apache-vhost
/roles/apache-vhost/vars/website1.yml
site:
- domain: website1
http_port: 5000
https_port: 6000
./ roles / apache-vhost / vars / website2.yml
site:
- domain: website2
http_port: 5001
https_port: 6001
задача в playbook -
- name: add http Listeners to ports.conf
lineinfile:
path: /etc/httpd/conf.d/ports.conf
line: 'Listen {{item.http_port}} #{{ item.domain}}'
loop: "{{ site }}"
- name: add https Listeners to ports.conf
lineinfile:
path: /etc/httpd/conf.d/ports.conf
line: 'Listen {{item.https_port}} #{{ item.domain}}'
loop: "{{ site }}"
Спасибо.
Переменная site из 2-го файла website2.yml переопределяет значение из 1-го файла website1.yml, например
- hosts: localhost
vars_files:
- website1.yml
- website2.yml
tasks:
- debug:
var: site
дает
site:
- domain: website2
http_port: 5001
https_port: 6001
Вам нужно будет объединить (объединить) списки в цикл, например
- hosts: localhost
tasks:
- set_fact:
site: "{{ site|default([]) + x.site }}"
loop:
- website1.yml
- website2.yml
vars:
x: "{{ lookup('file', item)|from_yaml }}"
- debug:
var: site
дает
site:
- domain: website1
http_port: 5000
https_port: 6000
- domain: website2
http_port: 5001
https_port: 6001