Ansible:当条件与_项

Ansible:当条件与_项,ansible,Ansible,我的剧本中有这样一部分,效果很好: - name: "Copy solrconfig.xml" copy: src: "{{role_path}}/files/{{item.path}}" dest: "{{solr_jmx_config}}/solrconfig.xml" with_items: - path: solrconfig_master.xml when: inventory_hostname == "{{ solr_master }}" be

我的剧本中有这样一部分,效果很好:

- name: "Copy solrconfig.xml"
  copy:
    src: "{{role_path}}/files/{{item.path}}"
    dest: "{{solr_jmx_config}}/solrconfig.xml"
  with_items:
    - path: solrconfig_master.xml
  when: inventory_hostname == "{{ solr_master }}"
  become: yes
  become_user: solr

- name: "Copy solrconfig.xml"
  copy:
    src: "{{role_path}}/files/{{item.path}}"
    dest: "{{solr_jmx_config}}/solrconfig.xml"
  with_items:
    - path: solrconfig_slave.xml
  when: inventory_hostname != "{{ solr_master }}"
  become: yes
  become_user: solr
但是,我希望它看起来更好,并做类似的事情:

- name: "Copy solrconfig.xml"
  copy:
   src: "{{role_path}}/files/{{item.path}}"
   dest: "{{solr_jmx_config}}/solrconfig.xml"
  with_items:
   - path: solrconfig_master.xml -> when: inventory_hostname == "{{ solr_master }}"
   - path: solrconfig_slave.xml ->  when: inventory_hostname != "{{ solr_master }}"
  become: yes
  become_user: solr
如何为每个特定项目应用“何时”条件

致以最良好的祝愿,
Marek

为什么您需要
项目以及
角色路径?试试这个:

- name: "Copy solrconfig.xml"
  copy:
    src: "{{ 'solrconfig_master.xml' if inventory_hostname == solr_master else 'solrconfig_slave.xml' }}"
    dest: "{{solr_jmx_config}}/solrconfig.xml"
  become: yes
  become_user: solr
with
通常用于循环,单个元素不需要它。

当您在角色内调用任务时,文件模块的搜索路径包括
/files/…

Hi Konstantin,这种方法实际上对我很有效。谢谢你的回答!