Я пытаюсь автоматизировать добавление и удаление перенаправлений в Nginx, используя Ansible.
Добавил это в /group_vars/all.yml
:
general_redirects:
enabled: true
option:
- { tournaments: true }
- { leader: false }
Это задача, отвечающая за добавление всех перенаправления:
- name: Add general redirects
template:
src: "general.redirects.j2"
dest: /etc/nginx/conf.d/general.redirects
when: general_redirects and general_redirects.enabled == true
notify: restart nginx
tags: general
Но у меня проблема, как добавить правильные if и for в шаблон Jinja2: general.redirects.j2
.
В настоящее время у меня есть это, но при развертывании статус CHANGED
а файл с редиректами пуст. Идея состоит в том, чтобы прокомментировать редиректы при true
и раскомментировать false
:
{% if general_redirects.enabled == true %}
{% if redirect.option is defined -%}
{% for item in redirect.option-%}
{% if option.tournaments == false -%}
location = /no/promotions/tournaments { return 302 https://www.{{ domain }}/no/promotions; }
location = /fi/promotions/tournaments{ return 302 https://www.{{ domain }}/fi/promotions; }
location = /en/promotions/tournaments { return 302 https://www.{{ domain }}/en/promotions; }
{% else %}
#location = /no/promotions/tournaments{ return 302 https://www.{{ domain }}/no/promotions; }
#location = /fi/promotions/tournaments { return 302 https://www.{{ domain }}/fi/promotions; }
#location = /en/promotions/tournaments { return 302 https://www.{{ domain }}/en/promotions; }
{% endif -%}
{% endfor -%}
{% endif -%}
{% if redirect.option is defined -%}
{% for item in redirect.option -%}
{% if option.leaderboardrace == false -%}
location = /no/promotions/leader { return 302 https://www.{{ domain }}/no/promotions; }
location = /fi/promotions/leader { return 302 https://www.{{ domain }}/fi/promotions; }
location = /en/promotions/leader { return 302 https://www.{{ domain }}/en/promotions; }
{% else %}
#location = /no/promotions/leader { return 302 https://www.{{ domain }}/no/promotions; }
#location = /fi/promotions/leader { return 302 https://www.{{ domain }}/fi/promotions; }
#location = /en/promotions/leader { return 302 https://www.{{ domain }}/en/promotions; }
{% endif -%}
{% endfor -%}
{% endif -%}
{% endif -%}
Мне интересно, что не так с шаблоном. Может, есть какое-нибудь лучшее решение для автоматизации этого?