부록 H. ansible-vault를 사용하여 Ansible 암호 변수 암호화

ansible-vault 를 사용하여 암호를 저장하는 데 사용되는 Ansible 변수를 암호화할 수 있으므로 일반 텍스트로 읽을 수 없습니다. 예를 들어 group_vars/all.yml 에서 ceph_docker_registry_usernameceph_docker_registry_password 변수는 서비스 계정 자격 증명 또는 고객 포털 자격 증명으로 설정할 수 있습니다. 서비스 계정은 공유하도록 설계되었지만 고객 포털 암호를 보호해야 합니다. ceph_docker_registry_password 를 암호화하는 것 외에도 dashboard_admin_passwordgrafana_admin_password 를 암호화할 수도 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ansible 관리 노드에 액세스

절차

  1. Ansible 관리 노드에 로그인합니다.
  2. /usr/share/ceph-ansible/ 디렉토리로 변경합니다.

    [admin@admin ~]$ cd /usr/share/ceph-ansible/
  3. ansible-vault 를 실행하고 새 자격 증명 모음 암호를 생성합니다.

    예제

    [admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault'
    New Vault password:

  4. 자격 증명 모음 암호를 다시 입력하여 확인합니다.

    예제

    [admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault'
    New Vault password:
    Confirm New Vault password:

  5. 암호화할 암호를 입력한 다음 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를 입력하지 마십시오. 그렇지 않으면 암호화된 문자열에 암호의 일부로 새 행을 포함합니다.

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

    필요한 출력은 공백이나 새 줄 없이 암호가 즉시 시작됩니다.

  7. group_vars/all.yml 편집을 위해 를 열고 위의 출력을 파일에 붙여넣습니다.

    예제

    ceph_docker_registry_password_vault: !vault |
              $ANSIBLE_VAULT;1.1;AES256
              38383639646166656130326666633262643836343930373836376331326437353032376165306234
              3161386334616632653530383231316631636462363761660a373338373334663434363865356633
              66383963323033303662333765383938353630623433346565363534636434643634336430643438
              6134306662646365370a343135316633303830653565633736303466636261326361333766613462
              39353365343137323163343937636464663534383234326531666139376561663532

  8. 다음과 같이 암호화된 암호 아래에 행을 추가합니다.

    예제

    ceph_docker_registry_password: "{{ ceph_docker_registry_password_vault }}"

    참고

    Ansible의 버그가 Ansible 변수에 직접 자격 증명 모음 값을 할당할 때 문자열 유형을 중단하는 버그 로 인해 두 개의 변수를 사용해야 합니다.

  9. ansible-playbook 을 실행할 때 vault 암호를 요청하도록 Ansible을 구성합니다.

    1. /usr/share/ceph-ansible/ansible.cfg 편집을 위해 를 열고 [defaults] 섹션에 다음 행을 추가합니다.

      ask_vault_pass = True
    2. 필요한 경우 ansible-playbook을 실행할 때마다 --ask-vault-pass 를 전달할 수 있습니다.

      예제

      [admin@admin ceph-ansible]$ ansible-playbook -v site.yml --ask-vault-pass

  10. 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 인벤토리 위치를 사용하지 않는 경우에만 필요합니다.

추가 리소스