

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

# 에서 자동으로 노드 추가 AWS OpsWorks for Chef Automate
<a name="opscm-unattend-assoc"></a>

**중요**  
AWS OpsWorks for Chef Automate는 2024년 5월 5일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 기존 고객은 Chef SaaS 또는 대체 솔루션으로 마이그레이션하는 것이 좋습니다. 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의할 수 있습니다.

이 주제에서는 Amazon Elastic Compute Cloud(Amazon EC2) 노드를 Chef 서버에 자동으로 추가하는 방법을 설명합니다. [스타터 키트](opscm-starterkit.md)의 코드는 무인 방식을 사용하여 자동으로 노드를 추가하는 방법을 보여줍니다. 권장되는 새 노드의 무인(또는 자동) 연결 방법은 [Chef Client 쿡북](https://supermarket.chef.io/cookbooks/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에서 퍼블릭-프라이빗 키 페어를 생성한 다음 노드 이름을 사용하여 퍼블릭 키를 API 호출에 OpsWorks `associate-node` 전달할 수 있습니다. 스타터 키트에 포함된 스크립트는 조직 이름, 서버 이름, 서버 엔드포인트를 자동으로 수집합니다. 이렇게 하면 노드가 Chef 서버에 연결되며, 노드에서 실행되는 `chef-client` 에이전트는 프라이빗 키 일치 후에 서버와 통신할 수 있습니다.

 AWS OpsWorks for Chef Automate 서버와 관련된 노드에서 지원되는 최소 `chef-client` 버전은 13.*x*입니다. 안정적인 최신 `chef-client` 버전을 실행하는 것이 좋습니다.

노드의 연결을 해제하는 방법에 대한 자세한 내용은이 설명서[AWS OpsWorks for Chef Automate 서버에서 노드 연결 해제](opscm-disassociate-node.md)의 및 AWS OpsWorks for Chef Automate API 설명서[https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html)의 섹션을 참조하세요.

**Topics**
+ [지원되는 운영 체제](#w2ab1b9c28c17c15c17)
+ [1단계: 인스턴스 프로파일로 사용할 IAM 역할 생성](#opscm-create-instance-profile)
+ [2단계: Chef Client 쿡북 설치](#w2ab1b9c28c17c15c21)
+ [3단계: 무인 연결 스크립트를 사용하여 인스턴스 생성](#opscm-unattend-script)
+ [그 밖의 `chef-client` 반복 실행 자동화 방법](#w2ab1b9c28c17c15c25)
+ [관련 항목](#opscm-unattend-assoc-related)

## 지원되는 운영 체제
<a name="w2ab1b9c28c17c15c17"></a>

현재 노드에 지원되는 운영 체제 목록은 [Chef 웹 사이트](https://docs.chef.io/platforms.html)를 참조하세요.

## 1단계: 인스턴스 프로파일로 사용할 IAM 역할 생성
<a name="opscm-create-instance-profile"></a>

EC2 인스턴스 프로파일로 사용할 AWS Identity and Access Management (IAM) 역할을 생성하고 다음 정책을 IAM 역할에 연결합니다. 이 정책은 노드 등록 중에 AWS OpsWorks for Chef Automate (`opsworks-cm`) API가 EC2 인스턴스와 통신하도록 허용합니다. 인스턴스 프로파일에 대한 자세한 내용은 Amazon EC2 설명서의 [인스턴스 프로파일 사용하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)를 참조하세요. IAM 역할을 생성하는 방법에 대한 자세한 내용은 Amazon EC2 설명서의 [콘솔에서 IAM 역할 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#create-iam-role-console)을 참조하세요.

------
#### [ JSON ]

****  

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

------

## 2단계: Chef Client 쿡북 설치
<a name="w2ab1b9c28c17c15c21"></a>

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

## 3단계: 무인 연결 스크립트를 사용하여 인스턴스 생성
<a name="opscm-unattend-script"></a>

1. EC2 인스턴스를 생성하려면 [스타터 키트](opscm-starterkit.md)의 `userdata` 스크립트를 EC2 인스턴스 지침, Amazon EC2 Auto Scaling 그룹 시작 구성 또는 CloudFormation 템플릿의 `userdata` 섹션으로 복사할 수 있습니다. 사용자 데이터에 스크립트 추가에 대한 자세한 내용은 Amazon EC2 사용 설명서의 [시작 시 Linux 인스턴스에서 명령 실행](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)을 참조하세요.

   이 스크립트는 `opsworks-cm` API [https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_AssociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_AssociateNode.html) 명령을 실행하여 새 노드를 Chef 서버와 연결합니다.

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

1. EC2 설명서의 [인스턴스 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html) 단원에 나와 있는 절차를 따릅니다(여기에서 수정). EC2 인스턴스 시작 마법사에서 Amazon Linux AMI를 선택합니다.

1. **인스턴스 세부 정보 구성** 페이지에서 [1단계: 인스턴스 프로파일로 사용할 IAM 역할 생성](#opscm-create-instance-profile)에서 IAM 역할로 생성한 역할을 선택합니다.

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

1. [**스토리지 추가**] 페이지에서 변경해야 할 사항은 없습니다. [**태그 추가**]로 이동합니다.

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

1. [**검토 및 시작**]을 선택한 다음 [**시작**]을 선택합니다. 새 노드가 시작되면 노드는 `RUN_LIST` 파라미터에 지정한 레시피에 지정된 구성을 적용합니다.

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

## 그 밖의 `chef-client` 반복 실행 자동화 방법
<a name="w2ab1b9c28c17c15c25"></a>

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

`chef-client`에 제공할 수 있는 파라미터의 완전한 목록은 [Chef 설명서](https://docs.chef.io/ctl_chef_client.html)를 참조하세요.

## 관련 항목
<a name="opscm-unattend-assoc-related"></a>

다음 AWS 블로그 게시물은 Auto Scaling 그룹을 사용하거나 여러 계정 내에서 노드를 Chef Automate 서버와 자동으로 연결하는 방법에 대한 자세한 정보를 제공합니다.
+ [Using AWS OpsWorks for Chef Automate to Manage EC2 Instances with Auto Scaling](https://aws.amazon.com/blogs/mt/using-aws-opsworks-for-chef-automate-to-manage-ec2-instances-with-auto-scaling/)
+ [OpsWorks for Chef Automate - 서로 다른 계정에서 노드 자동 구성](https://aws.amazon.com/blogs/mt/opsworks-for-chef-automate-automatically-bootstrapping-nodes-in-different-accounts/)