안녕하세요. 오늘은 베스핀글로벌 DevOps실 윤 영기 님이 작성해 주신 앤서블(Ansible)로 프로비저닝 플레이북을 작성하는 방법에 대해서 알아보도록 하겠습니다.
이전 포스팅(Ansible Playbook 기본 작성 방법)에서 살펴본 내용을 기반으로 AWS에 VPC를 만들고 EC2를 생성하는 프로비저닝 플레이북을 만들어 볼 텐데요. 본 포스팅에서는 앤서블 2.9 버전에서 지원하는 모듈을 사용할 것이며, 앤서블 최신 버전의 모듈도 크게 다르지 않으니 참고하여 작성해 주시면 됩니다.
AWS 인프라 생성 순서
- VPC생성
- Subnet network 생성
- Internet Gateway 생성
- Routing Table 생성
- Security Group 생성
- EC2 생성
사용할 Ansible 모듈 (https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html)
- ec2_vpc_net
- ec2_vpc_subnet
- ec2_vpc_igw
- ec2_vpc_route_table
- ec2_group
- ec2
1. 호스트와 변수 설정, VPC생성
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-109-1024x573.png?resize=1024%2C573&ssl=1)
- tasks 부분을 살펴보자
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-110-1024x273.png?resize=1024%2C273&ssl=1)
2. Subnet 생성
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-111-1024x223.png?resize=1024%2C223&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-112-1024x249.png?resize=1024%2C249&ssl=1)
3. Internet gateway 생성
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-114-1024x158.png?resize=1024%2C158&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-115-1024x221.png?resize=1024%2C221&ssl=1)
4. Routing Table 생성
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-116-1024x282.png?resize=1024%2C282&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-117-1024x238.png?resize=1024%2C238&ssl=1)
5. Security Group 생성
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-118-1024x301.png?resize=1024%2C301&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-119-1024x195.png?resize=1024%2C195&ssl=1)
6. EC2 생성
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-120-1024x422.png?resize=1024%2C422&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-121-1024x353.png?resize=1024%2C353&ssl=1)
7. Playbook 전체
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-122-1024x772.png?resize=1024%2C772&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/08/1-123-1024x996.png?resize=1024%2C996&ssl=1)
실무에서는 Terraform으로 인프라를 프로비저닝 한 후 Configuration을 Ansible로 하는 경우가 일반적이나, Ansible만으로도 어느 정도 프로비저닝이 가능하기 때문에 알아두면 좋을 것 같습니다.
감사합니다 🙂
Written by 윤 영기 / Youngki Yoon
Software Engineer