复制模板文件仅存在共享目录+ Ansible

时间:2016-11-24 09:34:13

标签: ansible ansible-playbook

我几乎已经用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 - &gt;不适用于tempalte。

  2. 如何检查条件(如果共享目录存在,则复制模板)

  3. 注意:我在vars/main.yml

    中定义了所有变量

1 个答案:

答案 0 :(得分:1)

with_items肯定会使用模板。你的身份似乎有点偏,它应该看起来像:

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

对于问题的第二部分,您可以使用ansibles Django来确定共享目录是否存在,然后部署模板

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

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