以下ansible-playbook
使用ansible-playbook playbook.yml --tags=rancher
运行
- name: instal docker
hosts: rancher-server
become: yes
gather_facts: yes
roles:
- role: some_galaxy_role
- name: install rancher
hosts: rancher-server
become: yes
gather_facts: no
tasks:
- name: install rancher
debug:
tags:
- rancher
rancher
标签仅选择install rancher
播放并按预期运行。然而,第一个剧本install docker
的事实收集仍然在运行并且需要时间。为什么?有没有办法避免它?
以下是运行剧本的输出:
PLAY [install docker] *********************************************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************************
ok: [rancher-server1]
ok: [rancher-server2]
PLAY [install rancher]
您可以在播放级别上放置一个标签,这样整个Instal Docker
播放都会被跳过。
给定:
- name: Install Docker
hosts: localhost
gather_facts: yes
tags:
- docker
tasks:
- debug:
- name: Install rancher
hosts: localhost
gather_facts: yes
tags:
- rancher
tasks:
- debug:
当使用--tags rancher
运行时,这会产生:
PLAY [Install Docker] *********************************************************************************************
PLAY [Install rancher] ********************************************************************************************
TASK [Gathering Facts] ********************************************************************************************
ok: [localhost]
TASK [debug] ******************************************************************************************************
ok: [localhost] =>
msg: Hello world!
PLAY RECAP ********************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
另一方面,请注意,您不是被迫收集所有事实,您也可以收集子集,以加快播放速度。
例如,您可以只使用事实的极小子集:
- name: Install Docker
hosts: localhost
gather_subset:
- min
tasks:
- debug:
当然,这一切都取决于some_galaxy_role
中需要什么来收集事实。