Ansible이란?

Post on Aug 27, 2019 by atom

Ansible이란?


Ansible이란

  • IT system의 자동화 도구이며, system설정, software 배포, 설치, 관리업무를 다룰 수 있다
  • 중점목표는 쉬운사용이며, 보안과 안정성 또한 중요 목표이다
  • 기존의 system변화를 최소화하기 위하여 openSSH를 이용한다.
  • python으로 개발되고 YAML이라는 언어를 통해 정의할 수 있고 json으로 통신한다
    • python Github project 중 Rank 6
  • 관리 대상 machine에 agent를 설치하지 않는다. 따라서 agent의 install, upgrade, scheduling 등이 필요하지 않는다

ANSIBLE

장점

  • 빠른 SSH통신, 빠른 provision이 가능
  • 추후 상용환경에서 사용할 때 agent기반이면 방화벽 이슈, agent데몬관리라는 불편한 점이 존재
  • 자동 배포환경이 쉬움
  • 대부분이 멱등성을 제공
  • playbook
  • ad-hoc 지원
  • 병령 provisioning 지원
  • vagrant (hashiCorp)

멱등성(Idempotency)

  • 여러번 적용해도 결과는 바뀌지 않음
  • 바뀌는 것이 없으면 당연히 배포되어도 바뀌지 않음
  • 바뀌는 부분이 있으면 그 부분만 반영
  • shell, command, file module은 보장안됨

Ansible에서의 멱등성이란?

여러번 ansible툴을 사용하더라도 동일한 결과가 나올수 있도록 제공되는 형태여야 한다. 매번 다른 결과가 나오거나 에러가 나온다면 멱등성이 보장되지 않는다. ansible툴은 거의 대부분 이 멱등성을 제공한다. 또한 멱등성 제공을 위해 조건절을 제공하고 있다. 예를 들면, 처음 ansible 스크릡트를 실행 후 다시 실행을 하면, 상황에 따라서는 파일이 append 될수 있으나 멱등성의 원칙은 언제나 실행해도 동일한 결과가 나와야 한다. 또한 파일 디렉토리를 생성 또는 삭제하는 'create' 'remove'와 같은 ansible 모듈을 실행 할 때 'when' 조건절을 이용할 수 있다.