Ansible:提示角色变量

Ansible:提示角色变量

我有一个简单的ansiblePlaybook,setup.yml它看起来基本上像这样(简化):

- hosts: my-server-to-setup
  remote_user: [REDACTED]
  become: yes
  #vars_prompt:
  #  - name: "zbxusername"
  #    prompt: "Zabbix Username"
  #    private: no    
  #  - name: "zbxpw"
  #     prompt: "Zabbix Passwort"
  #     private: yes
      roles:
       - basic
  #     - zabbix

zabbix角色需要用户名和密码才能访问 zabbix 主机服务器。凭据不同,每个用户都有自己的帐户。

如果我想安装该zabbix角色,我需要取消注释该vars_prompt部分,因为ansible不允许从角色内进行提示。

有一个更好的方法吗?当前的方式可能会使重要变量未定义,这将导致剧本失败。

答案1

创建剧本top.yml导入剧本basic.ymlzabix.yml。使用标签有选择地运行导入的剧本。

ansible-playbook -t basic top.yml
ansible-playbook -t zabix top.yml

剧本 top.yml

- name: Run basic
  import_playbook: basic.yml
  tags: [basic, never]

- name: Run zabix
  import_playbook: zabix.yml
  tags: [zabix, never]

剧本基本.yml

- hosts: my-server-to-setup
  remote_user: [REDACTED]
  become: yes
  roles:
    - basic

剧本 zabix.yml

- hosts: my-server-to-setup
  remote_user: [REDACTED]
  become: yes
  vars_prompt:
    - name: "zbxusername"
      prompt: "Zabbix Username"
      private: no    
    - name: "zbxpw"
      prompt: "Zabbix Passwort"
      private: yes
  roles:
    - zabbix

笔记

标签never避免意外运行这两个角色可能很有用。如果没有指定任何标签,导入的剧本都不会运行。以下命令不会产生任何操作。

ansible-playbook top.yml

相关内容