AWS OpsWorks for Chef Automate에서 자동으로 노드 추가 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS OpsWorks for Chef Automate에서 자동으로 노드 추가

중요

AWS OpsWorks for Chef Automate는 더 이상 신규 고객을 받지 않습니다. 기존 고객은 서비스를 이용할 수 없게 되는 2024년 5월 5일까지 영향을 받지 않습니다. 기존 고객은 Chef SaaS 또는 대체 솔루션으로 마이그레이션하는 것이 좋습니다. 자세한 내용은 AWS OpsWorks for Chef Automate 수명 종료 관련 자주 묻는 질문 섹션을 참조하세요.

이 주제에서는 Amazon Elastic Compute Cloud(Amazon EC2) 노드를 Chef 서버에 자동으로 추가하는 방법을 설명합니다. 스타터 키트의 코드는 무인 방식을 사용하여 자동으로 노드를 추가하는 방법을 보여줍니다. 권장되는 새 노드의 무인(또는 자동) 연결 방법은 Chef Client 쿡북을 구성하는 것입니다. 스타터 키트의 userdata 스크립트를 사용할 수 있으며, 노드에 적용할 쿡북을 사용하여 userdata 스크립트의 run_list 섹션 또는 Policyfile.rb를 변경할 수 있습니다. chef-client 에이전트를 실행하기 전에 Chef Client 쿡북을 Chef 서버에 설치한 다음 아래 샘플 명령과 같이 예를 들면 HTTPD 역할을 사용하여 서비스 모드에서 chef-client 에이전트를 설치합니다.

chef-client -r "chef-client,role[httpd]"

Chef 서버와 통신하기 위해서는 chef-client 에이전트 소프트웨어에 클라이언트 노드의 퍼블릭 키에 대한 액세스 권한이 있어야 합니다. Amazon EC2에서 퍼블릭-프라이빗 키 페어를 생성한 다음 노드 이름을 사용하여 AWS OpsWorks associate-node API 호출에 퍼블릭 키를 전달할 수 있습니다. 스타터 키트에 포함된 스크립트는 조직 이름, 서버 이름, 서버 엔드포인트를 자동으로 수집합니다. 이렇게 하면 노드가 Chef 서버에 연결되며, 노드에서 실행되는 chef-client 에이전트는 프라이빗 키 일치 후에 서버와 통신할 수 있습니다.

AWS OpsWorks for Chef Automate 서버와 관련된 노드에서 지원되는 최소 chef-client 버전은 13.x입니다. 안정적인 최신chef-client 버전을 설치할 것을 권장합니다.

노드 연결을 끊는 방법에 대한 자세한 내용은 이 안내서의 AWS OpsWorks for Chef Automate 서버에서 노드 연결 해제와 AWS OpsWorks for Chef Automate API 설명서의 disassociate-node 섹션을 참조하십시오.

지원되는 운영 체제

현재 노드에 지원되는 운영 체제 목록은 Chef 웹 사이트를 참조하십시오.

1단계: 인스턴스 프로파일로 사용할 IAM 역할 생성

EC2 인스턴스 프로파일로 사용할 AWS Identity and Access Management(IAM) 역할을 생성하여 다음 정책을 IAM 역할에 연결합니다. 이 정책은 노드 등록 중에 AWS OpsWorks for Chef Automate(opsworks-cm) API가 EC2 인스턴스와 통신하도록 허용합니다. 인스턴스 프로파일에 대한 자세한 내용은 Amazon EC2 설명서의 인스턴스 프로파일 사용하기를 참조하세요. IAM 역할을 생성하는 방법에 대한 자세한 내용은 Amazon EC2 설명서의 콘솔에서 IAM 역할 생성을 참조하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "opsworks-cm:AssociateNode", "opsworks-cm:DescribeNodeAssociationStatus", ], "Resource": "*", "Effect": "Allow" } ] }

AWS OpsWorks는 앞서 나온 정책 문장에서 IAM 역할을 생성하는 데 사용할 수 있는 AWS CloudFormation 템플릿을 제공합니다. 다음 AWS CLI 명령은 이 템플릿을 사용하여 사용자를 위한 인스턴스 프로파일을 생성합니다. 기본 리전에서 AWS CloudFormation 스택을 새로 생성하고 싶은 경우에는 --region 파라미터를 생략할 수 있습니다.

aws cloudformation --region region ID create-stack --stack-name myChefAutomateinstanceprofile --template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-nodes-roles.yaml --capabilities CAPABILITY_IAM

2단계: Chef Client 쿡북 설치

아직 수행하지 않은 경우, (대체 방법) Berkshelf를 사용하여 원격 소스에서 쿡북 가져오기의 단계에 따라 Berksfile 또는 Policyfile.rb 파일이 Chef Client 쿡북을 참조하고 쿡북을 설치하는지 확인합니다.

3단계: 무인 연결 스크립트를 사용하여 인스턴스 생성

  1. EC2 인스턴스를 생성하려면 userdata 스크립트를 스타터 키트에서 EC2 인스턴스 지침의 userdata 섹션, Amazon EC2 Auto Scaling 그룹 시작 구성 또는 AWS CloudFormation 템플릿으로 복사합니다. 사용자 데이터 스크립트 추가에 대한 자세한 내용은 Amazon EC2 사용 설명서의 시작 시 Linux 인스턴스에서 명령 실행을 참조하세요.

    이 스크립트는 opsworks-cm API associate-node 명령을 실행하여 새 노드를 Chef 서버와 연결합니다.

    기본적으로 새로 등록된 노드의 이름은 인스턴스 ID인데 userdata 스크립트에서 NODE_NAME 변수의 값을 수정하여 이 이름을 변경할 수 있습니다. Chef 콘솔 UI에서는 현재 조직 이름을 변경할 수 없기 때문에 CHEF_AUTOMATE_ORGANIZATIONdefault로 설정된 상태로 둡니다.

  2. EC2 설명서의 인스턴스 시작 단원에 나와 있는 절차를 따릅니다(여기에서 수정). EC2 인스턴스 시작 마법사에서 Amazon Linux AMI를 선택합니다.

  3. 인스턴스 세부 정보 구성(Configure Instance Details) 페이지에서 1단계: 인스턴스 프로파일로 사용할 IAM 역할 생성에서 IAM 역할로 생성한 역할을 선택합니다.

  4. Advanced Details(고급 정보) 영역에서, 이 절차 앞부분에서 생성한 userdata.sh 스크립트를 업로드합니다.

  5. [Add Storage] 페이지에서 변경해야 할 사항은 없습니다. [Add Tags]로 이동합니다.

  6. 이 예제에서는 Configure Security Group(보안 그룹 구성) 페이지에서 규칙 추가를 선택한 후 HTTP를 입력하여 Apache 웹 서버에서 443 포트와 80 포트를 엽니다.

  7. [Review and Launch]를 선택한 다음 [Launch]를 선택합니다. 새 노드가 시작되면 노드는 RUN_LIST 파라미터에 지정한 레시피에 지정된 구성을 적용합니다.

  8. 선택 사항: nginx 쿡북을 실행 목록에 추가한 경우, 새 노드의 퍼블릭 DNS에 연결된 웹 페이지를 열면 nginx 웹 서버가 호스팅하는 웹 사이트가 표시되어야 합니다.

그 밖의 chef-client 반복 실행 자동화 방법

보다 어렵고 권장되지 않는 방법이지만 이 주제의 스크립트를 오직 독립형 인스턴스 사용자 데이터의 일부로 실행하고, AWS CloudFormation 템플릿을 사용해 새 인스턴스 사용자 데이터에 추가하고, 정기적으로 스크립트를 실행하거나 서비스 내에서 chef-client를 실행하도록 cron 작업을 구성할 수 있습니다. 하지만 다른 자동화 기법에는 몇 가지 단점이 있기 때문에 Chef Client Cookbook 방법을 사용하는 것이 좋습니다.

chef-client에 제공할 수 있는 파라미터의 완전한 목록은 Chef 설명서를 참조하십시오.

다음 AWS 블로그 포스트에는 Auto Scaling 그룹을 사용하거나 여러 계정 내에서 Chef Automate 서버에 노드를 자동으로 연결하는 방법이 자세히 나와 있습니다.