40.5.2. Docker CLI를 통한 상태 점검 실행
Docker CLI를 통해 ose -ansible 이미지를 실행할 수 있는 호스트에서 Ansible을 설치하고 구성할 필요가 없도록 컨테이너에서 openshift -ansible 플레이북을 실행할 수 있습니다.
컨테이너를 실행할 권한이 있는 루트가 아닌 사용자로 다음을 실행합니다.
# docker run -u `id -u` \ 1 -v $HOME/.ssh/id_rsa:/opt/app-root/src/.ssh/id_rsa:Z,ro \ 2 -v /etc/ansible/hosts:/tmp/inventory:ro \ 3 -e INVENTORY_FILE=/tmp/inventory \ -e PLAYBOOK_FILE=playbooks/openshift-checks/health.yml \ 4 -e OPTS="-v -e openshift_check_logging_index_timeout_seconds=45 -e etcd_max_image_data_size_bytes=40000000000" \ 5 openshift3/ose-ansible
- 1
- 이러한 옵션을 사용하면 컨테이너 내부에서 SSH 키를 읽을 수 있도록 권한에 필요한 현재 사용자와 동일한 UID로 컨테이너를 실행할 수 있습니다(SSH 개인 키는 소유자만 읽을 수 있음).
- 2
- 컨테이너를 루트가 아닌 사용자로 실행할 때 일반 사용 아래에 /opt/app-root/src/.ssh 아래에 볼륨으로 SSH 키를 마운트합니다.
- 3
- 다른 경우 /etc/ansible/hosts 를 클러스터의 인벤토리 파일의 위치로 변경합니다. 이 파일은 컨테이너의
INVENTORY_FILE
환경 변수에 따라 사용되는 /tmp/inventory 에 바인딩 마운트됩니다. - 4
PLAYBOOK_FILE
환경 변수는 컨테이너 내에서 /usr/share/ansible/openshift-ansible 을 기준으로 health.yml 플레이북의 위치로 설정됩니다.- 5
-e key=value
형식을 사용하여 단일 실행에 필요한 변수를 설정합니다.
이전 명령에서 SSH 키는 :Z
옵션으로 마운트되어 컨테이너에서 제한된 SELinux 컨텍스트에서 SSH 키를 읽을 수 있습니다. 이 옵션을 추가하면 원래 SSH 키 파일의 레이블이 system_u:object_r:container_file_t:s0:c113,c247
과 유사하게 레이블이 다시 지정됩니다. :Z
에 대한 자세한 내용은 docker-run(1)
도움말 페이지를 참조하십시오.
이러한 볼륨 마운트 사양은 예기치 않은 결과를 초래할 수 있습니다. 예를 들어, 마운트 및 ✓여기서 레이블을 다시 지정하면 $HOME/.ssh 디렉터리인 sshd 는 원격 로그인을 허용하기 위해 공개 키에 액세스할 수 없게 됩니다. 원본 파일 레이블을 변경하지 않도록 하려면 SSH 키 또는 디렉터리의 사본을 마운트합니다.
전체 .ssh 디렉토리를 마운트하는 데 유용할 수 있습니다.
- SSH 구성을 사용하여 호스트와 키와 일치하거나 다른 연결 매개 변수를 수정할 수 있습니다.
-
사용자가 known_hosts 파일을 제공하고 SSH 검증 호스트 키를 갖도록 허용합니다. 이 설정은 기본 구성에서 비활성화되며
-e ANSIBLE_HOST_KEY_CHEC=True
를docker
명령줄에 추가하여 환경 변수를 사용하여 다시 활성화할 수 있습니다.