본문 바로가기
INFRA/Operation

AWS Puppet 설치 및 리소스 배포

by BTC_Dana 2022. 6. 13.

안녕하세요! 하씨가문의 영광입니다!
지난 주 AWS Ansible를 통해 리소스를 배포해보았는데요!
이번에는 AWS Puppet를 통해 리소스를 배포해보도록 하겠습니다!
Don't have a good day, Have a great day!

 


목차

  1. AWS Puppet 생성
  2. Puppet 서버 접속
  3. 리소스 배포
  4. 리소스 정리

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 credentialsDownload Starter Kit를 볼 수 있습니다.
  • Puppet 서버에 접속하려면 IDPassword가 필요하니 저장을 해둡니다.
  • 다운로드 시간은 약 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

댓글