Расплывчатая ошибка устаревания при запуске ansible playbook

В моем сборнике есть переменные, которые передаются роли. Когда я запускаю его, я получаю [DEPRECATION WARNING]: Skipping task due to undefined Error, in the future this will be a fatal error..

Вот что у меня есть:

---

- hosts: hadoopL0X
  become: yes
  become_method: sudo

  vars:
    logrotate_scripts:
      - name: "{{ item  }}"
        with_items:
          - zookeeper
          - sa
        path: "/var/log{{ item }}/{{ item }}.log "
        options:
          - daily
          - rotate 3
          - missingok
          - compress
          - notifempty
  roles:
    - log-rotation

...

Роль как таковая:

log-ротация / tasks / main.yml

---

- name: Setup logrotate.d scripts
  template:
    src: logrotate.d.j2
    dest: "{{ logrotate_conf_dir }}{{ item }}"
  with_items: "{{ logrotate_scripts }}"

...

log-ротация / defaults / main.yml

---

logrotate_conf_dir: "/etc/logrotate.d/"
logrotate_scripts: []

...

log-ротация / шаблоны / logrotate.d.j2

# {{ ansible_managed }}

"{{ item.path }}" {
  {% if item.options is defined -%}
  {% for option in item.options -%}
  {{ option }}
  {% endfor -%}
  {% endif %}
  {%- if item.scripts is defined -%}
  {%- for name, script in item.scripts.iteritems() -%}
  {{ name }}
    {{ script }}
  endscript
  {% endfor -%}
  {% endif -%}
}

Любая помощь приветствуется!


person IAmKiserWilhelm    schedule 30.08.2016    source источник


Ответы (1)


with_items можно использовать только с задачами, его нельзя использовать при определении переменных, и поэтому item не определен. Также похоже, что переменная service также не определена.

person Strahinja Kustudic    schedule 30.08.2016
comment
Спасибо за быстрый ответ! Это имеет смысл, поскольку сценарий работал до того, как я добавил в смесь переменные. Как лучше всего определить несколько сервисов для итерации по задаче шаблона logrotate? - person IAmKiserWilhelm; 31.08.2016
comment
set_fact внутри with_items должен делать то, что вы хотите - person nitzmahone; 31.08.2016
comment
@MarcWKoser, вы можете использовать то, что предложил Мэтт, но я бы порекомендовал вам изменить свою роль и передать только список имен служб, для которых вы хотите создать конфигурации logrotate, поскольку, насколько я могу видеть, все то же самое, кроме пути к файлам, которые могут быть построены из имени службы. - person Strahinja Kustudic; 02.09.2016