仅复制模板文件共享目录存在 + 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 个问题。
with_items
- > 不适用于 tempalte。
如何检查条件(如果存在共享目录则复制模板)
注意:我在 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
...
我几乎已经用 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
- > 不适用于 tempalte。如何检查条件(如果存在共享目录则复制模板)
注意:我在 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
...