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

Copy template file only shared directory is present + Ansible

我几乎已经用 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

中定义了所有变量

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 stat 来确定共享目录是否存在,然后部署模板

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

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