Closed choisungwook closed 3 months ago
첫 번째 차이는 상태관리 입니다. Ansible은 상태가 없고 Terraform은 상태를 관리합니다. Ansible은 상태를 관리하지 않기 때문에 상태 비교과정이 없습니다. 그러므로 Ansible은 시스템이 이미 코드가 반영되어 있더라도 실행(Ansible 모듈에 따라 실행안할 수 있음)합니다. 반면 Terraform은 상태를 관리하므로 테라폼 코드가 이미 반영되어 있다면 코드를 실행하지 않습니다.
두 번째 차이는 코드 실행구조입니다. Ansible은 ssh프로토콜을 사용하여 코드를 실행하지만 terraform은 provider가 제공하는 API를 사용하여 코드를 실행합니다.
세 번째 차이는 사용목적입니다. Anisble은 여러 시스템에 동일한 작업을 할 때 사용합니다. 반면 Terraform은 주로 한 시스템(예: AWS, 솔루션)의 설정 또는 리소스 관리에 사용합니다.
제 생각에 가장 잘못되어 알려진 사실은, ansible은 항상 멱등성을 보장하지 않습니다. https://malwareanalysis.tistory.com/699
테라폼은 인프라나 SaaS 솔루션에서 사용하는 리소스를 코드로 관리하기 위한 도구입니다. 반면 앤서블은 서버 세팅을 immutable하게 진행하기 위한 도구입니다. 보통 AWS나 Azure등과 같은 클라우드 리소스를 사용해야하는 경우에는 테라폼을 사용하고, 테라폼을 통해서 배포한 서버에 대해서 세팅을 자동화하기 위해서 앤서블을 사용합니다.
온프레미스에서 테라폼을 사용하는 경우가 있는지는 모르겠지만, 앤서블은 서버 세팅을 위해서 자주 사용하는 것으로 알고 있습니다. 클라우드를 사용할때는 보통 테라폼을 통해서 EC2를 생성하고, 유저 데이터에 앤서블 코드를 넣어서, immutable하게 서버를 생성하곤 합니다.