안녕하세요! 하씨가문의 영광입니다!
지난 주 AWS Ansible를 통해 리소스를 배포해보았는데요!
이번에는 AWS Puppet를 통해 리소스를 배포해보도록 하겠습니다!
Don't have a good day, Have a great day!
▶ 목차
1. AWS Puppet 생성
- AWS Opswork 검색후 Puppet Enterprise 서버 생성 클릭합니다.
- Puppet Server 이름, 지역, 인스턴스 타입 선정하고
- 가까운 지역 선택(Puppet 서버는 인스턴스에 대한 비용만 지불합니다.)합니다.
- SSH Key 생성(새로운 창을 열어서 EC2 console 클릭)합니다.
- KeyPair 생성 클릭하고,
- 이름 설정 뒤 .pem 선택 후 키페어 로컬 저장소에 저장합니다.
- 생성된 EC2 Key 선택 후 나머지 값은 디폴트로 설정합니다.
- Next를 선택합니다.
Puppet Master Server 설정값
- VPC : 디폴트
- Subnet : ap-northeast-1a
- Security groups : 디폴트
- Service role, Instance profile : 디폴트
- System maintenance값은 자동 오프라인 시간대를 정하는 설정값입니다.
- 저희는 바로 생성하고 삭제할 예정이니 시간대는 작업하고 있는 시간을 제외한 시간대를 선택해줍니다.
- Automated backup는 자동 백업시간을 정하는 설정값입니다.
- 마찬가지고 바로 생성하고 삭제할 예정이니 디폴트 값으로 진행합니다.
- Next를 선택합니다.
- 리뷰단계가 나오면 자신이 생성할 Puppet 서버를 다시 한번 확인하고 문제가 없으면 Launch를 클릭합니다.
- Launch를 누르면 설치가 진행되는 과정과 함께 Download credentials와 Download Starter Kit를 볼 수 있습니다.
- Puppet 서버에 접속하려면 ID와 Password가 필요하니 저장을 해둡니다.
- 다운로드 시간은 약 10분 정도 걸렸던 같네요,,
설치가 완료되면..
- 성공적으로 설치가 완료되었다는 화면과 Puppet Enterprise Console 페이지가 생성됩니다.
- 또한 EC2로 들어가면 Master 서버가 생성된 것을 확인할 수 있습니다.
여기서 잠깐!!
보안 그룹에는 22, 443, 8140, 53 Inbound Port가 오픈되어 있어야 생성된 Master Server에 접속할 수 있습니다.
2. Puppet 서버 접속
- Open Puppet Enterprise Console을 클릭합니다.
- 만약 다음과 같이 비공개로 설정되어 있지 않을 경우 고급을 누른뒤 다음과 같이 URL 선택후 이동합니다.
- 저희는 테스트를 목적으로 하기 때문에 깊게 설정은 하지 않겠습니다.
- 페이지에 접속하면 로그인 화면 창이 나오는데,
- 여기서는 좀전에 Puppet 설치를 하면서 credential 값을 저장했던 파일을 열어서 다음과 같이 입력해줍니다.
- 입력하면 Log in을 클릭합니다.
- 로그인을 하게 되면 다음과 같이 Puppet Enterprise 화면을 볼 수 있습니다.
3. 리소스 배포
- 마스터 서버가 생성되었고 이제 노드를 추가해보겠습니다.
- 노드들에게는 에이전트가 설치되어야 합니다. 각 에이전트들의 요청을 보내려면 액세스 거부 상태를 해결하기 위해서 다음과 같이 액세스 거부 규칙을 바꿔줘야 합니다.(참조사이트)
- INVENTORY -> Node groups -> PE Infrastructure -> PE Master
- PE Master에서 Class를 선택하면 여러가지 Class들이 나열되고 그 중에서
puppet_enterprise::profile::master를 찾습니다.
- 만약에 없을 경우 검색창에 puppet_enterprise::profile::master 검색하여 Class를 추가해줍니다.
- puppet_enterprise::profile::master를 찾았으면 다음과 같이 파라미터 값에 allow_unauthenticated_ca = true값을 설정합니다.
- 그리고 Add to node group 선택합니다.
- Commit 1 change 선택합니다.
- 사전 작업이 준비가 되면 이제부터 노드를 추가해보겠습니다.
- 먼저 AWS Console 창으로 접속하여 EC2로 입장합니다.
EC2 설정값
- EC2 Name : node01
- OS 이미지 : Amazon Linux
- 인스턴스 유형 : t2.micro
- 키페어 : 생성했었던 키페어(pmasterkey)
- 방화벽 : 기존 보안 그룹
- 인스턴스 시작 클릭하여 인스턴스를 생성합니다.
- EC2가 생성되었으면 다시 Puppet Console 창에 들어와서 INVENTORY -> Nodes -> Add nodes 클릭합니다.
- Install agents를 클릭합니다.
Node 설정값
- Transport method : SSH(Linux이미지를 선택했을 경우)
- SSH hosts : node의 Public IP
- User : ec2-user
- SSH Key : 로컬에 저장한 pem키를 메모장으로 오픈하여 복사후 붙여넣기
- Test Connection 체크
- Add nodes 클릭
- Agent 설치가 제대로 설치되었다면 ORCHESTRATION -> Tasks -> node가 추가됩니다.
- node에 에이전트가 설치가 되었다면 연결을 시켜보도록 하겠습니다.
- node -> Add nodes -> Connect over SSH or WinRM 클릭합니다.
- agent 설치와 동일하게 ssh hosts, user, ssh key 입력합니다.
- Target Port 선택후 22 입력후 Add를 클릭합니다.
- node가 추가되면 다음과 같이 node가 추가된 것을 확인할 수 있습니다.
- 이제 Apache를 배포해보겠습니다.
- ORCHESTRATION -> Plan -> Run a plan
Run 설정값
- Plan : aggregate::targets
- Plan parameters : command = sudo yum install -y httpd && sudo systemctl start httpd && sudo systemctl enable httpd
- targets = 3.112.246.203(추가한 노드 IP)
- Run job 클릭합니다.
- Plan이 성공하면 다음과 같이 Output에서 성공적으로 배포되었다는 화면을 볼 수 있습니다.
- 이제 제대로 배포되었는 지 확인하러 가봅시다!
- node에 접속하여 curl 또는 systemctl status httpd를 통해 확인을 해봅니다.
- 성공적으로 Apache가 배포된 것을 확인할 수 있네요!!
4. 리소스 정리
- AWS Console에 접속하여 검색창에 Opsworks에서 Puppet Enterprise servers에 접속하여
- 자신이 만들었던 master서버에 접속하여,
- Actions를 눌러 Delete Puppet Enterprise servers를 눌러 삭제를 진행합니다!
- 삭제를 누르면 다음과 같이 제대로 삭제되고 있는 화면을 볼 수 있고
- 추가한 노드도 삭제를 진행하여 비용을 얼른 줄입시다!
이상으로 AWS Puppet을 통해서 리소스를 배포해보았는데요!
개인적으로 콘솔을 통해 인스턴스를 만들어 배포를 하는 작업보다
간편하여 작업하기 수월했던 거 같아요!
읽어주셔서 감사합니다:)
'INFRA > Operation' 카테고리의 다른 글
Airflow (0) | 2022.06.24 |
---|---|
AWS CloudFormation 설치 및 리소스 배포 (0) | 2022.06.23 |
AWS Ansible 리소스 구성 및 설치 (0) | 2022.06.09 |
AWS terraform 설치 및 리소스 배포 (0) | 2022.05.31 |
Azure Ansible 설치 및 리소스 배포 (0) | 2022.05.30 |
댓글