2016-11-24 48 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 

现在,我有2个问题。

  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 
    ...