부록 H. ansible-vault를 사용하여 Ansible 암호 변수 암호화
ansible-vault
를 사용하여 암호를 저장하는 데 사용되는 Ansible 변수를 암호화할 수 있으므로 일반 텍스트로 읽을 수 없습니다. 예를 들어 group_vars/all.yml
에서 ceph_docker_registry_username
및 ceph_docker_registry_password
변수는 서비스 계정 자격 증명 또는 고객 포털 자격 증명으로 설정할 수 있습니다. 서비스 계정은 공유하도록 설계되었지만 고객 포털 암호를 보호해야 합니다. ceph_docker_registry_password
를 암호화하는 것 외에도 dashboard_admin_password
및 grafana_admin_password
를 암호화할 수도 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ansible 관리 노드에 액세스
절차
- Ansible 관리 노드에 로그인합니다.
/usr/share/ceph-ansible/
디렉토리로 변경합니다.[admin@admin ~]$ cd /usr/share/ceph-ansible/
ansible-vault
를 실행하고 새 자격 증명 모음 암호를 생성합니다.예제
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password:
자격 증명 모음 암호를 다시 입력하여 확인합니다.
예제
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password:
암호화할 암호를 입력한 다음 CTRL+D를 두 번 입력하여 항목을 완료합니다.
구문
ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password: Reading plaintext input from stdin. (ctrl-d to end input) PASSWORD
DASD를 암호 로 교체하십시오.
예제
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password: Reading plaintext input from stdin. (ctrl-d to end input) SecurePassword
암호를 입력한 후 Enter를 입력하지 마십시오. 그렇지 않으면 암호화된 문자열에 암호의 일부로 새 행을 포함합니다.
ceph_docker_registry_password_vault: !vault |
로 시작하는 출력을 기록한 후 다음 단계에서 사용될 몇 가지 숫자 행으로 끝납니다.예제
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password: Reading plaintext input from stdin. (ctrl-d to end input) SecurePasswordceph_docker_registry_password_vault: !vault | $ANSIBLE_VAULT;1.1;AES256 38383639646166656130326666633262643836343930373836376331326437353032376165306234 3161386334616632653530383231316631636462363761660a373338373334663434363865356633 66383963323033303662333765383938353630623433346565363534636434643634336430643438 6134306662646365370a343135316633303830653565633736303466636261326361333766613462 39353365343137323163343937636464663534383234326531666139376561663532 Encryption successful
필요한 출력은 공백이나 새 줄 없이 암호가 즉시 시작됩니다.
group_vars/all.yml
편집을 위해 를 열고 위의 출력을 파일에 붙여넣습니다.예제
ceph_docker_registry_password_vault: !vault | $ANSIBLE_VAULT;1.1;AES256 38383639646166656130326666633262643836343930373836376331326437353032376165306234 3161386334616632653530383231316631636462363761660a373338373334663434363865356633 66383963323033303662333765383938353630623433346565363534636434643634336430643438 6134306662646365370a343135316633303830653565633736303466636261326361333766613462 39353365343137323163343937636464663534383234326531666139376561663532
다음과 같이 암호화된 암호 아래에 행을 추가합니다.
예제
ceph_docker_registry_password: "{{ ceph_docker_registry_password_vault }}"
참고Ansible의 버그가 Ansible 변수에 직접 자격 증명 모음 값을 할당할 때 문자열 유형을 중단하는 버그 로 인해 두 개의 변수를 사용해야 합니다.
ansible-playbook
을 실행할 때 vault 암호를 요청하도록 Ansible을 구성합니다./usr/share/ceph-ansible/ansible.cfg
편집을 위해 를 열고[defaults]
섹션에 다음 행을 추가합니다.ask_vault_pass = True
필요한 경우 ansible-playbook을 실행할 때마다
--ask-vault-pass
를 전달할 수 있습니다.예제
[admin@admin ceph-ansible]$ ansible-playbook -v site.yml --ask-vault-pass
site.yml
또는site-container.yml
을 다시 실행하여 암호화된 암호와 관련된 오류가 없는지 확인합니다.예제
[admin@admin ceph-ansible]$ ansible-playbook -v site.yml -i hosts --ask-vault-pass
-i hosts
옵션은/etc/ansible/hosts
의 기본 Ansible 인벤토리 위치를 사용하지 않는 경우에만 필요합니다.
추가 리소스
- Red Hat Container Registry Authentication의 서비스 계정 정보 참조