我几乎已经用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个问题。
with_items
- &gt;不适用于tempalte。
如何检查条件(如果共享目录存在,则复制模板)
注意:我在vars/main.yml
答案 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
...