대화형 입력: 프롬프트
대화형 입력: 프롬프트 (Interactive input: prompts)
플레이북이 사용자에게 특정 입력을 요청하게 만들고 싶다면 vars_prompt 섹션을 추가하세요. 사용자에게 변수를 입력받으면 비밀번호 같은 민감한 데이터를 기록하지 않아도 된다는 장점이 있어요. 보안뿐 아니라 유연성도 확보할 수 있어요. 예를 들어 하나의 플레이북을 여러 소프트웨어 릴리스에 걸쳐 쓴다면 특정 릴리스 버전을 프롬프트로 물어볼 수 있어요.
출처: 문서
본문
플레이북이 사용자에게 특정 입력을 요청하게 하고 싶다면 vars_prompt 섹션을 추가하세요. 변수 값을 사용자에게 입력받으면 비밀번호 같은 민감한 데이터를 기록하지 않아도 돼요. 보안 외에도 프롬프트는 유연성을 지원해요. 예를 들어 하나의 플레이북을 여러 소프트웨어 릴리스에 걸쳐 쓴다면, 특정 릴리스 버전을 프롬프트로 물어볼 수 있어요.
가장 기본적인 예시는 다음과 같아요:
---
- hosts: all
vars_prompt:
- name: username
prompt: What is your username?
private: false
- name: password
prompt: What is your password?
tasks:
- name: Print a message
ansible.builtin.debug:
msg: 'Logging in as {{ username }}'
사용자 입력은 기본적으로 숨겨지는데, private: false로 설정하면 화면에 보이게 할 수 있어요.
참고: 개별
vars_prompt변수에 대한 프롬프트는 그 변수가 이미 명령줄--extra-vars옵션으로 정의되어 있거나, cron이나 Ansible AWX 같은 비대화형 세션에서 실행될 때 건너뛰어져요. 자세한 내용은 런타임에 변수 정의하기를 참고하세요.
잘 바뀌지 않는 변수라면, 나중에 덮어쓸 수 있는 기본값을 제공할 수 있어요.
vars_prompt:
- name: release_version
prompt: Product release version
default: "1.0"
vars_prompt로 입력된 값 해시하기
입력된 값을 해시해서 사용할 수 있어요. 예를 들어 user 모듈로 비밀번호를 정의할 때 쓰죠:
vars_prompt:
- name: my_password2
prompt: Enter password2
private: true
encrypt: sha512_crypt
confirm: true
salt_size: 7
Passlib이 설치되어 있다면, 그 라이브러리가 지원하는 어떤 crypt 스킴이든 사용할 수 있어요:
- des_crypt - DES Crypt
- bsdi_crypt - BSDi Crypt
- bigcrypt - BigCrypt
- crypt16 - Crypt16
- md5_crypt - MD5 Crypt
- bcrypt - BCrypt
- sha1_crypt - SHA-1 Crypt
- sun_md5_crypt - Sun MD5 Crypt
- sha256_crypt - SHA-256 Crypt
- sha512_crypt - SHA-512 Crypt
- apr_md5_crypt - Apache의 MD5-Crypt 변형
- phpass - PHPass의 Portable Hash
- pbkdf2_digest - 일반적인 PBKDF2 해시
- cta_pbkdf2_sha1 - Cryptacular의 PBKDF2 해시
- dlitz_pbkdf2_sha1 - Dwayne Litzenberger의 PBKDF2 해시
- scram - SCRAM 해시
- bsd_nthash - FreeBSD의 MCF 호환 nthash 인코딩
받아들여지는 파라미터는 'salt' 또는 'salt_size'뿐이에요. 'salt'를 정의해서 고유한 salt를 쓰거나, 'salt_size'로 자동 생성하게 할 수 있어요. 기본적으로 Ansible은 크기 8의 salt를 생성해요. (버전 2.7에 추가됨)
Passlib이 설치되어 있지 않다면 Ansible은 crypt 라이브러리를 대체로 사용해요. Ansible은 최대 네 가지 crypt 스킴을 지원하며, 플랫폼에 따라 최대 다음 스킴들이 지원돼요:
- bcrypt - BCrypt
- md5_crypt - MD5 Crypt
- sha256_crypt - SHA-256 Crypt
- sha512_crypt - SHA-512 Crypt
(버전 2.8에 추가됨)
vars_prompt 값에 특수 문자 허용하기
{나 % 같은 일부 특수 문자는 템플릿 오류를 일으킬 수 있어요. 특수 문자를 받아들여야 한다면 unsafe 옵션을 사용하세요:
vars_prompt:
- name: my_password_with_weird_chars
prompt: Enter password
unsafe: true
private: true
더 알아보기 (Learn more)
- 런타임에 변수 정의하기 —
--extra-vars로 명령줄에서 변수 전달하기 - 조건문 (Conditionals) — 플레이북 안에서 조건 처리하기