Ansible 1.6 включает with_items устарела

Похоже, что эта функция устарела, я действительно не понимаю, почему, технический директор Ansible говорит, что мы должны использовать вместо этого with_nested, но, честно говоря, я понятия не имею, как это сделать,

Вот мой playboook:

- hosts: all
  user: root
  vars: 
   - sites:
     - site: site1.com
       repo: ssh://hg@bitbucket.org/orgname/reponame
       nginx_ssl: true;
       copy_init:
        - path1/file1.txt
        - path2/file2.php
        - path2/file3.php

     - site: site2.net
       repo: ssh://hg@bitbucket.org/orgname/reposite2

     - site: site4.com
       repo: ssh://hg@bitbucket.org/orgname/reposite3
       copy_init:
        - path2/file2.php

  tasks:
     - name: Bootstrap Sites
      include: bootstrap_site.yml site={{item}}

И сообщение об ошибке при попытке выполнить это в Ansible 1.6.6:

ОШИБКА: [УСТАРЕЛО]: include + with_items является удаленной устаревшей функцией. Пожалуйста, обновите ваши книги.

Как я могу преобразовать этот playbook во что-то, что работает с этой доступной версией?

2 ответа

К сожалению, замены нет. Некоторые вещи, которые вы можете сделать:

  • Передайте список вашему включенному файлу и повторите его там. В вашей пьесе:

    vars:
        sites:
           - site1
           - site2
    tasks:
        - include: bootstrap_site.yml sites={{sites}}
    

    И в bootstrap_site.yml:

    - some_Task: ...
      with_items: sites
    
    - another_task: ...
      with_items: sites
    
    ...
    
  • Перепишите bootstrap_site как модуль (в python, bash, как угодно), поместите его в library DIR рядом с вашей пьесой. Тогда вы могли бы сделать:

    - bootstrap_site: site={{item}}
      with_items: sites
    

Обновление: Ansible V2 вышел и возвращает комбинированный цикл include + with_items!

Я нашел ответ, чтобы обойти сообщение, осуждаемое бла-бла... как и было задано в оригинальном сообщении.

Я добавил файл vars / filenames.yml:

  filenames:
  - file1
  - file2
  - file3

Далее я читаю эти имена в начале сборника пьес:

  - name: read filenames
    include_vars: vars/filenames.yml

Затем я могу использовать их позже:

  - name: Copy files 1
    copy: src=/filesrc1/{{ item }} dest=/filedest1/{{ item }} owner=me group=we
    with_items: filenames

и так далее....

С уважением, Том

Другие вопросы по тегам