我希望有一个入门手册,比如go.yml
- 在此,我希望能够提示用户他们想要对哪些产品执行操作(比如proxy
},lb
等。)。
有没有办法可以查询用户的输入,然后根据该输入启动playbooks?基本上,我想要以下内容:
- hosts: "prod"
sudo: yes
vars_prompt:
product: "What product do you want to deploy?"
if product == proxy:
- include proxy.yml
if product == lb:
- include lb.yml
...
我对playbooks如何流动不太满意,以及它们与任务/处理程序文件的区别。有可能这样吗?我的目标是避免有十几个不同的剧本文件可供选择,而只是有一个默认的启动类型剧本,可以随时使用。
答案 0 :(得分:1)
剧本可以包括其他剧本。因此,您可以拥有多个通过单个入口点手册触发的剧本。但在剧本级别上没有条件。所有包含的剧本都将被执行。
你在理论上的角色条件会起作用。正确的语法是:
roles:
- role: proxy
when: product == "proxy"
- role: lb
when: product == "lb"
但这有点重新发明轮子。要限制应执行哪些角色,通常使用tags(和skip-tags)。
roles:
- role: proxy
tags: proxy
- role: lb
tags: lb
然后,例如,用--tags "proxy"
给你打电话。这也适用于附带的剧本。
在角色上使用vars_prompt和条件的缺点是,在执行playbook时你将获得大量跳过的任务。按标签过滤时,不匹配的角色/任务将不会以跳过状态显示。