2016-11-24 7 views
1

Я почти достиг в организации моей системы с возможностью. Кроме одного.Копирует только файл с общим файлом шаблона + Ansible

У меня есть файлы шаблонов называется

- database.yml 
    - secrets.yml 

Например, цели у меня есть database.yml контента выглядеть следующим образом.

default: &default 
    adapter: postgresql 
    encoding: unicode 
    # For details on connection pooling, see rails configuration guide 
    # http://guides.rubyonrails.org/configuring.html#database-pooling 
    pool: 5 


{{ passenger_app_env }}: 
    <<: *default 
    database: {{ db_name }} 
    username: {{ db_user }} 
    password: {{ db_password }} 

Теперь мне нужно скопировать этот шаблон в общий каталог на сервере. Но с условиями, в которых существует общий каталог.

- name: 'Template copy' 
    become: yes 
    become_user: '{{ deploy_user }}' 
    template: 
     src: '{{ item }}' 
     dest: '/home/deployer/template' 
     with_items: 
     - database.yml 
     - secrets.yml 

Теперь у меня есть проблема с этим.

  1. with_items -> Не работает с tempalte.

  2. Как проверить условия (что, если общий каталог присутствует, чем скопировать шаблон)

Примечание: У меня есть все переменные, определенные в vars/main.yml

ответ

1

with_items определенно работает с шаблоны. ваш identation кажется немного выключен, он должен выглядеть следующим образом:

- name: Template copy 
    become: yes 
    become_user: '{{ deploy_user }}' 
    template: 
    src: '{{ item }}' 
    dest: '/home/deployer/template' 
    with_items: 
    - database.yml 
    - secrets.yml 

И во второй части вопроса, вы могли бы использовать ansibles stat, чтобы определить, если общий каталог существует, а затем развернуть шаблон

- name: check for shared dir 
    stat: 
    path: /path/to/shared/dir 
    register: shared_dir 

- name: Template copy 
    when: shared_dir.stat.exists 
    ...