我有两个剧本,一个是 fs.yml,另一个是 nfs.yml。我怎样才能将这两个剧本添加到一个剧本中,并提示我需要玩哪一个。我的剧本粘贴在下面。尝试了多个选项,但总是 vars_prompt 首先执行,尽管定义了标签变量。
# cat filesystemcreation.yml
---
# YAML documents begin with the document separator ---
# The minus in YAML this indicates a list item. The playbook contains a list
# of plays, with each play being a dictionary
-
vars_prompt:
- name: HostGroup
prompt: Enter the Hostgroup to run the playbook
private: no
tags:
- local
- name: vgname
prompt: please enter the Volume Group Name
private: no
tags:
- local
- name: lvname
prompt: please enter the Logical Volume Name
private: no
tags:
- local
- name: lvsize
prompt: please enter the Logical Volume Size in MB
private: no
tags:
- local
- name: mountname
prompt: please enter the mountpoint Name
private: no
tags:
- local
hosts: "{{ HostGroup }}"
remote_user: root
tasks:
- name: Creating Logical Volume
lvol:
vg: "{{ vgname }}"
lv: "{{ lvname }}"
size: "{{ lvsize }}"
tags:
- local
- name: Creating File system
filesystem:
fstype: ext4
dev: /dev/mapper/{{ vgname }}-{{ lvname }}
tags:
- local
- name: Mounting File system
mount:
name: "{{ mountname }}"
src: /dev/mapper/{{ vgname }}-{{ lvname }}
fstype: ext4
state: mounted
tags:
- local
# Three dots indicate the end of a YAML document
...
答案1
标签仅适用于任务,并且您在 vars 部分中使用它们。此外,您尚未说明如何排除标签,默认情况下所有标签都会运行。
如果您还在某个位置提供了同名的值,则不会出现提示优先级低于“play vars_prompt”。
就我个人而言,我只会对敏感信息使用提示。Ansible 是为非交互式用例设计的,如果不在交互式 shell 上,则会跳过提示。
还请考虑将变量和任务移至角色以便更好地重复使用。为您的用例提供一个 defaults/main.yml 文件,其中包含一些合理的值。剧本可以通过多种不同的方式覆盖这些变量。