如何在 Ansible 中跳过剧本

如何在 Ansible 中跳过剧本

我有两个剧本,一个是 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 文件,其中包含一些合理的值。剧本可以通过多种不同的方式覆盖这些变量。

相关内容