Ansible:如何根据条件 运行 整个剧本?
Ansible: How do I run an entire playbook based on a condition?
上下文: 配置全新的服务器。
我只想提供一次,尤其是更新部分。
启动第一个剧本 bootstrap.yml 后,我让它在文件夹中留下一个文件,让我知道剧本 运行 很好。
因此,在同一个剧本中,我必须在每个任务(我所做的)之上添加一个条件,以检查该文件是否存在。
如果文件存在,则跳过 运行针对所有拥有该文件的机器执行 playbook。
问题: 如何仅在未找到文件时将条件添加到 运行 剧本?我不想为我自己的每个任务添加“when:”语句我觉得这很愚蠢。
问题:有没有人有更好的解决方案,可以用我没有想到的单行或清单文件中的参数来解决这个问题?
编辑:
这是我检查文件的方式
- name: Bootstrap check
find:
path: /home/bot/bootstrapped-ok
register: bootstrap
然后条件为:
when: bootstrap.matched == 0
所以如果找不到文件 运行 整个剧本。
我想你可能over-complicating这个咯。说“我想在特定条件下尽早放弃剧本而不会出错”是否准确?
如果是这样,你想要“end_host”
How do I exit Ansible play without error on a condition
首先检查文件,如果找到,end_host。
- name: Bootstrap check
stat:
path: /home/bot/bootstrapped-ok
register: bootstrap
- name: End the play if previous provisioning was successful
meta: end_host
when: bootstrap.stat.exists == True
- name: Confinue if bootstrap missing
debug:
msg: "Hello"
上下文: 配置全新的服务器。
我只想提供一次,尤其是更新部分。 启动第一个剧本 bootstrap.yml 后,我让它在文件夹中留下一个文件,让我知道剧本 运行 很好。
因此,在同一个剧本中,我必须在每个任务(我所做的)之上添加一个条件,以检查该文件是否存在。 如果文件存在,则跳过 运行针对所有拥有该文件的机器执行 playbook。
问题: 如何仅在未找到文件时将条件添加到 运行 剧本?我不想为我自己的每个任务添加“when:”语句我觉得这很愚蠢。
问题:有没有人有更好的解决方案,可以用我没有想到的单行或清单文件中的参数来解决这个问题?
编辑:
这是我检查文件的方式
- name: Bootstrap check
find:
path: /home/bot/bootstrapped-ok
register: bootstrap
然后条件为:
when: bootstrap.matched == 0
所以如果找不到文件 运行 整个剧本。
我想你可能over-complicating这个咯。说“我想在特定条件下尽早放弃剧本而不会出错”是否准确?
如果是这样,你想要“end_host”
How do I exit Ansible play without error on a condition
首先检查文件,如果找到,end_host。
- name: Bootstrap check
stat:
path: /home/bot/bootstrapped-ok
register: bootstrap
- name: End the play if previous provisioning was successful
meta: end_host
when: bootstrap.stat.exists == True
- name: Confinue if bootstrap missing
debug:
msg: "Hello"