Ansible 정리

앤서블

서버 구성 관리 자동화 프로그램

용어

  • 애드훅: 일회성 실행
  • 플레이북: yaml 로 재사용

CMDB

  • Configuration Management DataBase (구성 관리 데이터베이스)
  • 분산 설치된 서버, 스토리지, 네트워크 장비 등의 CPU, 메모리, 디스크 등의 하드웨어 정보와 OS, 응용프로그램 종류 등의 소프트웨어 정보 관리
  • 다양한 시스템의 정보를 한 번에 파악 가능하고, 각 장비 간 연관 관계 파악이 쉬워 예방, 장애 파악, 유지보수에 좋음
  • 앤서블 CMDB 는 앤서블 호스트 파일 또는 지정된 인벤토리를 통해 설정 관리 대상 시스템의 정보를 setup 모듈을 통해 수집, 저장
  • 앤서블 vault 로 중요 정보 암호화 가능
  • Device42, servicenow 등이 지원
  • ansible-cmdb 를 사용해 간단한 대시보드로 볼 수 있다.

최적화

pipelining

  • 앤서블 실행 단계를 한 단계로 줄일 수 있음
  • 플레이북 내에서는 ansible_ssh_pipelining 으로 설정 가능
  • /etc/ansible/ansible.cfg 에서 설정 가능

forks

  • 한 번에 실행할 수 있는 노드의 수 제어 (default: 5)
  • serial 은 단순히 전체 노드에서 어느 정도를 실행할 것인지를 설정하는 거라 forks 와는 다르다.

async

  • 태스크 별 지정된 주기에 체크하고 모든 노드의 동일 태스크가 완료되어야 다음 태스크 실행
  • 주기를 0으로 설정하면 상태 체크 없이 다음 태스크가 진행된다.

strategy free

  • 상태 체크는 하지만 다른 노드의 진행을 기다리지 않고 각 노드 간 독립적으로 태스크 진행
  • 빠르게 작업이 끝나는 노드가 생기므로 forks 수의 제한을 가능한 늘려줘야한다.

설정 확인

ansible-config dump --only-changed 로 변경된 설정 확인 가능

블록

  • with_items, with_nested, with_dict, with_file을 사용해 여러 개의 태스크를 한 번에 실행 가능

fact_caching

  • 기본적으로 앤서블의 fact 는 실행 시마다 수집되는데, 이 옵션을 설정으로 디스크 또는 메모리에 캐싱해 fact 수집 시간을 단축시킴
  • 기본 값은 24시간

ansible-vault

  • 평문 파일을 aes256으로 암복호화

no_log

  • 플레이북 실행시 -v, -vv, -vvv의 옵션으로 암호화 파일의 유추가 가능한데, no_log 옵션을 줘서 해결 가능

여담

  • 설정이 많고, 모듈도 많아서 사용할 때 홈페이지를 참고해가며 삽질해야할 듯
  • Docker 설치 전 물리적인 서버의 설정을 맞춰줄 때나 디버깅할 때 필수로 보인다.
  • 시스템 관리자가 아니거나 AWS 쓴다면 사용할 일이 거의 없을 것 같다.
  • AWX로 Web 콘솔에서 관리가 가능하다.