Фильтрация массива Vars в Ansible - PullRequest
0 голосов
/ 27 апреля 2018

В настоящее время у нас есть огромный файл, который содержит все наши конфиги nginx для каждого сайта, с которым мы работаем. Файл содержит около 150 строк или около того сайтов, подобных этому:

- { nginx_tempalte: 'site.conf.tpl', domain: 'example.com', server: 'ServerA', enabled: true, conf_name: 'example_site'  }

Наша книга игр повторяет каждый вар 2 раза. Один раз для получения его в sites-enabled, а другой для символической ссылки. Это занимает около 5 минут каждый цикл, что не идеально.

Я попытался настроить вложенный цикл, который принимает зарегистрированную переменную d, в которой есть все имена конфигурации из доступных сайтов, и проверяет их на соответствие данной переменной ранее. Тем не менее, это похоже на тот же подход.

Я бы хотел помочь с фильтрацией этих файлов.

1 Ответ

0 голосов
/ 27 апреля 2018

Это зависит от того, как вы получаете диктат. Если это переменная, вы можете иметь:

---
- name: Test
  hosts: localhost
  gather_facts: False

  # with predefined vars
  vars:

    nginx: { nginx_tempalte: 'site.conf.tpl', domain: 'example.com', server: 'ServerA', enabled: true, conf_name: 'example_site'  }

  tasks:

    - name: Fact
      set_fact:
        domain: "{{ nginx['domain'] }}"
        server: "{{ nginx['server'] }}"

    - name: Print Domain
      debug:
        var: domain

    - name: Print Server
      debug:
        var: server

И у вас будут оба значения одновременно:

PLAY [Test] ********************************************************************************************************************

TASK [Fact] ********************************************************************************************************************
ok: [localhost]

TASK [Print Domain] ************************************************************************************************************
ok: [localhost] => {
    "domain": "example.com"
}

TASK [Print Server] ************************************************************************************************************
ok: [localhost] => {
    "server": "ServerA"
}

PLAY RECAP *********************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...