ansible을 설치하기 위해서 Centos 4대를 구성하여 진행 초기 기본 설정만 진행
먼저 ansible을 사용하는 이유부터 알아야한다
- Ansible은 IaC(Infrasture as Code) 한마디로 code로 모든 Infra를 관리하는것이다
- 이전에 centos 여러대를 관리하기 위해서도 한개한개 일일이 들어가서 셋팅을 해줘야하는 번거로움이 있었는데 ansible을 이용하여 동일하게 100대 1000대의 셋팅을 가능하게 한다
- 하지만 일일이 셋팅을 하면 Human Error를 수반할 수 밖에 없게 된다
- 선언형 언어이다
- code로써 셋팅을 자동화하고 그 상태가 유지된다는 뜻이다
- k8s에서도 역시 항상 cofing file에 기술한 대로 infra를 유지하려고 노력을 하게 되는데 이것을 IaC 라고한다
IaC
배포관리
- 가상머신, App를 배포하는데 초점이 맞춰져있으며 HashiCorp 사의 제품이 주류를 이루고있다(vagrant, terraform, vault등)
- 배포 뿐만 아니라 간단한 구성 관리도 가능하다
구성관리
- 가상머신이나 App을 배포 후에 구성을 설정, 관리, 유지보수 하는데 초점이 맞춰져있다
- puppet, chef, salutstack, ansible 등
Pull Base & Push Base
Pull Base
- puppet과 chef는 Agent를 필요로 한다
- Agent들은 주기적으로 중앙 서버에 구성정보를 확인한다
Push Base
- Agent가 필요없다,SSH통신을 한다
- 항상 멱등성을 보장한다 (멱등성: 몇번을 수행해도 같은 결과를 보장)
Mutable VS Immutable
Mutable(가변 Infra)
- 여러 관리 대상 인프라가 독립적으로 관리, 별도의 변경 사항을 가진다
- ansible, chef, puppet, saltstack 등 대부분 구성 관리 도구는 가변 인프라에 초점이 있다
- 각 서버는 인프라 전체에서 동일하지 않고 고유의 독립된 개체로 관리한다
Immutable(불변 Infra)
- Infra가 배포된 후 절대로 변하지 않음
- 마이크로 서비스 아키텍쳐(MSA) 환경에서 불변 인프라의 필요성이 더욱 증가하고 있다
- 모놀리식 아키텍쳐에서는 불변 인프라가 필요하지 않다
- 어떤 시점에서 서버 상태를 저장해 복제 할 수 있게 하자는 개념
- 한번 설정된 서버는 수정없이 파기되므로 멱등성이 불필요하다