Ansible: 프롬프트 역할 변수

Ansible: 프롬프트 역할 변수

기본적으로 다음과 같은 간단한 ansible플레이북이 있습니다 (단순화).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_promptansible

더 좋은 방법이 있나요? 현재 접근 방식에서는 중요한 변수를 정의되지 않은 상태로 남겨둘 수 있으며, 이로 인해 플레이북이 실패하게 됩니다.

답변1

스크립트 만들기top.yml가져오기 스크립트basic.yml그리고zabix.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]

basic.yml 스크립트

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

scriptzabix.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

관련 정보