Ansible 출력 로깅
Ansible 출력 로깅 (Logging Ansible output)
기본적으로 Ansible은 플레이·태스크·모듈 인자에 대한 출력을 컨트롤 노드의 화면(STDOUT)으로 보내요. 이 출력을 로그로 남기고 싶다면 목적에 따라 다른 방법을 고를 수 있어요. 컨트롤 노드 한 곳에 모으기, 관리 노드별로 나누기, 보안 데이터베이스에 쌓기까지 세 가지 옵션을 소개할게요.
출처: 문서
본문
기본적으로 Ansible은 플레이, 태스크, 모듈 인자에 대한 출력을 컨트롤 노드의 화면(STDOUT)으로 보내요. Ansible 출력을 로그로 남기려면 세 가지 옵션이 있어요.
- Ansible 출력을 컨트롤 노드의 단일 로그에 저장하려면
log_path설정 파일 설정을 켜요. 비슷한 태스크를 구분하기 좋게 변수 값을 Ansible 출력에 포함하는display_args_to_stdout도 함께 설정하면 유용해요. - Ansible 출력을 관리 노드별로 각각 별도의 로그에 저장하려면
no_target_syslog와syslog_facility설정 파일 설정을 켜요. - Ansible 출력을 보안 데이터베이스에 저장하려면 AWX나 Red Hat Ansible Automation Platform을 사용해요. 그러면 그래프나 REST API를 통해 호스트·프로젝트·특정 인벤토리 기준으로 시간 경과에 따른 이력을 검토할 수 있어요.
no_log로 민감한 데이터 보호하기
Ansible 출력을 로그에 저장하면 출력 속에 있는 비밀 데이터, 예를 들어 비밀번호나 사용자 이름이 그대로 노출돼요. 민감한 값이 로그에 남지 않게 하려면, 그런 값을 노출하는 태스크에 no_log: True 속성을 표시하세요. 다만 no_log 속성은 디버깅 출력에는 영향을 주지 않으므로, 프로덕션 환경에서 플레이북을 디버그하지 않도록 주의해야 해요. 예시는 '플레이북에서 비밀 데이터를 어떻게 지키나요?' 문서를 참고해요.
더 알아보기 (Learn more)
log_path같은 설정 파일 옵션의 자세한 내용은 Ansible 설정 문서를 확인해요.- 민감한 값 보호에 대한 더 자세한 예시는 공식 문서의 플레이북 보안 관련 주제를 참고해요.