안녕하세요! 하씨가문의 영광입니다
오늘은 AWS에서 Ansible 리소스 구성 및 설치를 해볼건데요!
바로 한번 시작해볼까요?! 레츠고우~~
1. AWS IAM User 생성
root 계정으로 로그인하여 사용하는것은 간편하고 편리해서 좋지만 그만큼 위험이 따른다는점!! 아시죠??
이를 방지하기위해 IAM User 생성과 적절한 권한 부여를 해줍니다.
- AWS 콘솔로 로그인 하여 IAM 접속 후 User 생성
- 사용자 계정 권한 설정
- 엑세스 키 ID 및 비밀 엑세스 키 저장
- 엑셀파일 또는 메모장에 복사해서 저장
2. Ansible을 사용할 가상 머신(EC2) 생성
멋지게 사용자를 만들었으면 이제 Ansible을 사용할 가상 머신을 생성 해볼까요?
- 이름 : AnsibleMaster
- 이미지 : Amazon Linux 2 Kernel 5.10 AMI
- 인스턴스 : t2.micro
- 네트워크 : 기존 default 보안 그룹 선택(22포트 생성해야함)
- SSH : 키페어 생성
위의 스펙에 따른 EC2를 하나생성해줍니다.
3. Ansible 환경 구성
- 만들어진 EC2에 접속해줍니다. (PEM 키를 통해)
- 원격접속은 mobaxterm 을 사용하였습니다.
- 환경구성
# aws 엔서블 설치 가능하게 설정
[ec2-user@ip-172-31-41-14 ~]$ sudo amazon-linux-extras enable ansible2
# 메타데이터 삭제
[ec2-user@ip-172-31-41-14 ~]$ sudo yum clean metadata
# 엔서블 설치
[ec2-user@ip-172-31-41-14 ~]$ sudo yum install ansible -y
- AWS 모듈을 사용하려면 pip와 boto를 설치를 해줍니다.
- 관리자 모드로 입장하여 "vi install.yml" 생성후 아래 코드 입력
---
- hosts: localhost
become: yes
tasks:
- name: install pip
yum:
name:
- python-pip
- python3-pip
state: latest
- name: install boto
pip:
name:
- boto
- boto3
- yml 파일의 생성후 "ansible-playbook install.yml" 을 설치를 해줍니다.
4. Credential 값 입력
먼저 AWS 콘솔내 보안 자격 증명에서 액세스 키와 비밀 액세스 키를 받아 복사해 둡니다.
그리고 export로 키들을 저장해둡니다.
export AWS_ACCESS_KEY_ID="자신의 엑세스 키 ID"
export AWS_SECRET_ACCESS_KEY="자신의 비밀 엑세스 키"
나중에 다시 접속해서 계속 쓰고 싶다면 vi ~/.bashrc를 열어서 두줄을 맨 밑에 추가해주면 됩니다.
5. VPC부터 서브넷, 보안 그룹 EC2 생성
이제 vi createVPC_EC2.yml로 vpc를 구성해 EC2를 yaml 파일로 만들어 보겠습니다.
---
- hosts: localhost
become: yes
tasks:
- name: Create VPC
ec2_vpc_net:
name: Test VPC
cidr_block: 10.1.0.0/16
region: ap-northeast-2
state: present
register: vpc_result
- name: Create Internet Gateway
ec2_vpc_igw:
vpc_id: "{{ vpc_result.vpc.id }}"
region: ap-northeast-2
state: present
tags:
Name: seoul_igw
- name: Create Public Subnet
ec2_vpc_subnet:
cidr: 10.1.0.0/24
vpc_id: "{{ vpc_result.vpc.id }}"
region: ap-northeast-2
az: ap-northeast-2a
map_public: yes
state: present
register: subnet_result
- name: Create Routing Table
ec2_vpc_route_table:
vpc_id: "{{ vpc_result.vpc.id }}"
region: ap-northeast-2
state: present
subnets: ["{{ subnet_result.subnet.id }}"]
- name: Create Security Group
ec2_group:
name: default sg
vpc_id: "{{ vpc_result.vpc.id }}"
region: ap-northeast-2
state: present
description: allow 22, 80
tags:
Name: default sg
rules:
- proto: tcp
ports:
- 22
cidr_ip: 0.0.0.0/0
- proto: tcp
ports:
- 80
cidr_ip: 0.0.0.0/0
- name: Create seoul EC2 key
ec2_key:
name: Testkey
region: ap-northeast-2
register: key_result
- name: Save Private Key
copy:
content: "{{ key_result.key.private_key }}"
dest: "/root/.ssh/testkey.pem"
mode: 0600
when: key_result.changed
- name: Create EC2
ec2:
key_name: Testkey
instance_tags:
Name: test EC2
region: ap-northeast-2
instance_type: t2.micro
image: ami-0cbec04a61be382d9
group: default sg
wait: yes
count: 1
vpc_subnet_id: "{{ subnet_result.subnet.id }}"
assign_public_ip: yes
파일 yaml 파일을 playbook으로 실행 시켜줍니다.
ansible-playbook createVPC_EC2.yml
성공적으로 배포되는것을 알수있습니다.
6. 생성된 리소스 결과 확인
이제 배포한 리소스들이 잘 만들어졌는지 한번 확인해볼까요?
- VPC
- Internet Gateway
- Public subnet
- Routing Table
- EC2 Key
- SSH 키 저장 위치
- EC2
7. 리소스 삭제
추가적인 비용이 흘러나가지 않도록 마지막 삭제작업까지 잘 해줘야겠지요?
< 삭제 순서 >
1. EC2
2. Key pair
3. Security group
4. VPC
5. IAM 사용자 제거(사용 안한다면)
(참고자료 : https://honglab.tistory.com/44 )
지금까지 AWS 를 사용하여 Ansible 리소스 구성 및 설치 내용을 다루어보았습니다!
많은 도움이 되기를 바라며 다음 시간에 보도록 하겠습니다~
'INFRA > Operation' 카테고리의 다른 글
AWS CloudFormation 설치 및 리소스 배포 (0) | 2022.06.23 |
---|---|
AWS Puppet 설치 및 리소스 배포 (0) | 2022.06.13 |
AWS terraform 설치 및 리소스 배포 (0) | 2022.05.31 |
Azure Ansible 설치 및 리소스 배포 (0) | 2022.05.30 |
Azure Terraform 설치 (0) | 2022.05.16 |
댓글