ansible 2.1.2.0Ansible - 각본 수준에서 vars_prompt 작동하지 않는 경우 조건
은 내가 솔루션 Ansible vars_prompt
기능도 할 수 있는지 여러분 모두와 함께 확인하는 것을 시도하고있는 이곳 상황이 및 when
조건부.
Ansible라는이 기능이 있습니다 vars_prompt을 나는
PS를 when 조건 (우리가 일반적으로 작업이나 각본 수준의 행동에서 작업에 사용 when: ...
)과 함께 클럽이 원하는 : 내 질문보다 다르다 이 게시물 : Ansible to Conditionally Prompt for a Variable? 즉 내 vars:
변수는 어떤 컴퓨터의 OS ENV 변수에 종속되지 않습니다. 제 경우에는 vars:
변수에 대한 간단한 하드 코드 값이 있습니다. 나는 또한 기본 플레이 북 레벨 (그리고 태스크 레벨이 아님)에서 when 조건을 실행 중이다.
는 난 할 노력하고있어 명령 줄에서, 사용자가 ansible-playbook install_tool.yml ... ...
작업 공간에서 --extra-vars "install_tool=true"
와/ansible /install_tool.yml 호출 한 경우에만, 변수 값을 입력을위한 사용자에게 메시지를 표시하는 것입니다 내가 가진 :
- hosts: all
become: true
gather_facts: false
vars:
instance: test
#install_tool: false
company_api_url: DUMMY_INVALID_URL
vars_prompt:
- name: "company_api_url"
prompt: "Enter Company API URL: "
default: "https://{{ instance }}.company.com"
private: no
when: install_tool == "true" and company_api_url == "DUMMY_INVALID_URL"
# or
#when: ("{{ install_tool }}" == "true" and "{{ company_api_url }}" == "DUMMY_INVALID_URL")
pre_tasks:
- debug: msg="install_tool = {{ install_tool }} and instance = {{ instance }}"
when: install_tool == "true"
내 질문 : 나는 무도회에 유효한 대체 default
값이 위의 조건 프롬프트 작업을 (얻을 수있는 방법
pt 변수) 및SKIPinstall_tool
변수에 따라 사용자에게 프롬프트가 표시됩니까?
나의 이해 : 최고 수준의 각본 파일 ( install_tool.yml )에서 , 내가 test
같은 값을 가진 변수 instance
를 정의하고있다. vads_prompt 섹션의 default
값이 test
을 선택하지 않고 해당 값을 입력란에 정의 된 값으로 대체 한 이유는 무엇입니까? - 또는 사용자가 의 변수에 instance
변수를 전달하는 경우 예 :--extra-vars "instance=qa"
? [https://qa.company.com]
으로 기본값을 원한다면 어떻게 할 수 있습니까?) 구문에 상관없이 오류가 표시되지 않습니다.
나는 다음과 같은 출력을 받고 있어요 (하지만 같은 치환 URL 값을 기다리고 있었다 : [https://test.company.com]
) :
실행 :
install_tool
이 false
로 설정하거나 명령 줄에서 통과 할 때 여전히 심지어하라는 것 및을 $ ansible-playbook -i "localhost," --connection=local install_tool.yml --extra-vars "install_tool=false instance=qa"
또는
$ ansible-playbook -i inventory -l localhost install_tool.yml --extra-vars "install_tool=false"
...
.....some lines here
...
PLAYBOOK: install_tool.yml *******************************************
1 plays in install_tool.yml
Enter Company API URL: [https://{{ instance }}.company.com]:
012을 사용하는 것으로조건 내에서 vars_prompt
구역 아래// - name: company_api_url
변수에 대해 구문 문제 등으로 인해 오류가 발생하지 않았으므로 (즉, Anipal은 잘못되었다고 생각하지 않습니다.) WHY, Anabilities는 계속 입력하라는 메시지를 표시합니다. vars_prompts
변수 위에, 나는 --extra-vars "install_tool=false"
- 또는을 통과하고있어 경우에도 경우 I 주석 라인 : install_tool: false
섹션 vars:
에서?
PS :when: ...
상태가 성공적으로 install_tool 사실이다 pre_tasks
섹션 즉 위해 일하고, 그것은 그 두 변수의 값을 보여줍니다 install_tool false로 설정하면 다음이 - debug
단계를 실행하지 않고 그것을 생략 (예상).
감사합니다.
하나의 질문에 답을하고 재현 가능한 예를 제시하십시오. – ceving
@ceving 내 게시물이 바뀌 었습니다. 도움이됩니까? 나는 약간의 설명을 자세하게 제공 할 생각이었다. 위의 install_tool.yml은 마지막에 치환 된'default' 값을 보여 주며'install_tool'이 false로 설정되었을 때 건너 뛰는 프롬프트 부분입니까? –
https://github.com/ansible/ansible/issues/19777 –