

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

# Windows OpsWorks Stacks에서 스택별 검색 인덱스 사용
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-opsworks"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

**참고**  
이 예제에서는 사용자가 이미 [Windows 인스턴스에서 레시피 실행](cookbooks-101-opsworks-opsworks-windows.md) 예제를 완료한 것으로 가정합니다. 그렇지 않은 경우 먼저 그 예제를 수행해야 합니다. 특히, 그 예제는 인스턴스에 대한 RDP 액세스를 활성화하는 방법을 설명합니다.

OpsWorks Stacks는 외에도 `node`다음과 같은 검색 인덱스를 제공합니다.
+ `aws_opsworks_stack` – 스택 구성.
+ `aws_opsworks_layer` – 스택의 계층 구성.
+ `aws_opsworks_instance` – 스택의 인스턴스 구성.
+ `aws_opsworks_app` – 스택의 앱 구성.
+ `aws_opsworks_user` – 스택의 사용자 구성.
+ `aws_opsworks_rds_db_instance` – 등록된 RDS 인스턴스의 연결 정보.

이러한 인덱스에는 일부 표준 Chef 속성이 포함되지만 주로 OpsWorks Stacks별 속성을 검색하기 위한 것입니다. 예를 들어 `aws_opsworks_instance`는 `online`과 같은 인스턴스 상태를 제공하는 `status` 포함합니다.

**참고**  
권장되는 방법은 가능할 경우 `node`를 사용하여 레시피를 표준 Chef 사용과 일관되게 유지하는 것입니다. 예제는 [Windows 스택에서 노드 검색 인덱스 사용](cookbooks-101-opsworks-opsworks-stack-config-search-node.md) 섹션을 참조하세요.

이 예제에서는 OpsWorks Stacks 인덱스를 사용하여 OpsWorks Stacks별 속성의 값을 검색하는 방법을 보여줍니다. 이 예제는 단일 인스턴스의 단일 사용자 지정 계층을 포함하는 단순한 Windows 스택을 기반으로 합니다. Chef 검색을 사용하여 인스턴스의 OpsWorks Stacks ID를 가져오고 결과를 Chef 로그에 넣습니다.

다음은 이 예제를 위한 스택을 생성하는 방법을 간략히 요약한 것입니다. 자세한 내용은 [새 스택 생성](workingstacks-creating.md) 섹션을 참조하세요.

**스택을 만듭니다**

1. [OpsWorks Stacks 콘솔](https://console.aws.amazon.com/opsworks/)을 열고 **\$1 Stack(\$1 스택)**을 선택합니다. 다음 설정을 지정하고, 그 외 설정에 대해서는 기본값을 수락한 다음 [**스택 추가**]를 선택합니다.
   + **이름** – IDSearch
   + **리전** – 미국 서부(오레곤)

     이 예제는 모든 리전에서 작동하지만 자습서의 경우 미국 서부(오레곤)를 사용하는 것이 좋습니다.
   + **기본 운영 체제** - Microsoft Windows Server 2012 R2

1. [**계층 추가**]를 선택하여 스택에 다음 설정으로 [사용자 지정 계층을 추가](workinglayers-custom.md)합니다.
   + **이름** – IDCheck
   + **짧은 이름** - idcheck

1. 기본 설정을 사용하여 IDCheck 계층에 [24/7 t2.micro 인스턴스를 추가](workinginstances-add.md)하고 [해당 인스턴스를 시작](workinginstances-starting.md)합니다. 이 인스턴스의 이름은 iptest1입니다.

   OpsWorks Stacks는이 인스턴스`AWS-OpsWorks-RDP-Server`에를 자동으로 할당합니다.는 권한이 있는 사용자가 인스턴스에 로그인할 수 있도록 허용하는 인바운드 규칙을이 보안 그룹에 추가하는 방법을 [RDP 액세스 활성화](cookbooks-101-opsworks-opsworks-windows.md#cookbooks-101-opsworks-opsworks-windows-rdp) 설명합니다.

1. [**권한**] 및 [**편집**]을 차례대로 선택하고 [**SSH/RDP**] 및 [**sudo/admin**]을 선택합니다. 인스턴스에 로그인하려면 일반 사용자에게는 `AWS-OpsWorks-RDP-Server` 보안 그룹 이외에 이러한 권한 부여가 필요합니다.
**참고**  
Administrator로도 로그인할 수 있지만 로그인 절차가 다릅니다. 자세한 내용은 [RDP를 사용하여 로그인](workinginstances-rdp.md) 섹션을 참조하세요.

**쿡북을 설정하려면**

1. `idcheck` 하위 디렉터리를 만들고 그 디렉터리로 이동합니다.

1. 다음 내용이 포함된 `metadata.rb` 파일을 만들어 `opstest`에 저장합니다.

   ```
   name "idcheck"
   version "0.1.0"
   ```

1. `idcheck` 안에 `recipes` 디렉터리를 만들고 다음 레시피가 포함된 `default.rb` 파일을 이 디렉터리에 추가합니다.

   ```
   windowsserver = search(:aws_opsworks_instance, "hostname:idcheck*").first
   Chef::Log.info("**********The public IP address is: '#{windowsserver[:instance_id]}'**********")
   ```

   이 레시피는 `aws_opsworks_instance` 검색 인덱스와 함께 Chef 검색을 사용하여 스택의 각 인스턴스에 대한 [인스턴스 속성](data-bag-json-instance.md)을 `idcheck`로 시작하는 호스트 이름과 함께 가져옵니다. 계층의 짧은 이름에 정수를 추가하여 호스트 이름을 생성하는 기본 테마를 사용하는 경우 이 쿼리는 IDCheck 계층의 인스턴스를 모두 반환합니다. 예를 들어, 이 계층에는 인스턴스가 하나 뿐인 것으로 알려져 있기 때문에 레시피는 첫 번째 인스턴스만 `windowsserver`에 할당합니다. 인스턴스가 여러 개인 경우 전체 목록을 가져와 인스턴스를 열거할 수 있습니다.

   이 레시피는 스택에는 이 호스트 이름을 가진 인스턴스가 하나 뿐이라는 사실을 활용하므로 첫 번째 결과는 올바른 인스턴스 하나입니다. 스택에 인스턴스가 여러 개인 경우 다른 속성을 검색하면 결과가 두 개 이상 반환될 수 있습니다. 인스턴스 속성의 목록은 [인스턴스 데이터 백(aws\$1opsworks\$1instance)](data-bag-json-instance.md) 단원을 참조하세요.

   인스턴스 속성은 기본적으로 해시 테이블이며 인스턴스의 OpsWorks Stacks ID가 `instance_id` 속성에 할당되므로 ID를 로 참조할 수 있습니다`windowsserver[:instance_id]`. 레시피가 해당 문자열을 메시지에 삽입하고 Chef 로그에 추가합니다.

1. `ipaddress` 쿡북의 `.zip` 아카이브를 생성하고, [이 아카이브를 Amazon S3 버킷에 업로드](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html)한 다음, 해당 아카이브의 URL을 기록합니다. 쿡북 리포지토리에 대한 자세한 정보는 [쿡북 리포지토리](workingcookbook-installingcustom-repo.md) 단원을 참조하세요.

   Amazon S3 버킷에 전달한 콘텐츠에는 고객 콘텐츠가 포함될 수 있습니다. 중요 데이터 제거에 관한 자세한 내용은 [S3 버킷을 비우려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) 단원 또는 [S3 버킷을 삭제하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) 단원을 참조하세요.

이제 쿡북을 설치하고 레시피를 실행할 수 있습니다.

**쿡북을 설치하고 레시피를 실행하려면**

1. [스택을 편집해 사용자 지정 쿡북을 활성화](workingcookbook-installingcustom-enable.md)하고 다음 설정을 지정합니다.
   + **리포지토리 유형** – **S3 아카이브**
   + **리포지토리 URL** - 앞에서 기록해 둔 쿡북 아카이브 URL

   기타 설정에 대해 기본값을 수락하고 [**저장**]을 선택하여 스택 구성을 업데이트합니다.

1. [사용자 지정 쿡북 업데이트 스택 명령을 실행](workingstacks-commands.md)하여 스택의 인스턴스(온라인 인스턴스 포함)에 사용자 지정 쿡북의 최신 버전을 설치합니다. 쿡북의 이전 버전이 있으면 이 명령이 이전 버전을 덮어 씁니다.

1. 사용자 지정 쿡북 업데이트가 완료되면 **실행할 레시피**가 **idcheck::default**로 설정된 상태에서 [**레시피 실행** 스택 명령](workingstacks-commands.md)을 실행하여 레시피를 실행합니다. 이 명령은 레시피로 구성된 실행 목록을 사용하여 Chef 실행을 시작합니다. execute\$1recipes 페이지는 그대로 열어 두십시오.

레시피가 성공적으로 실행되면 [Chef 로그](troubleshoot-debug-log.md)에서 가장 최근의 execute\$1recipes 이벤트를 보고 이를 확인할 수 있습니다. **실행 중인 명령 execute\$1recipes 페이지**에서 iptest1 인스턴스의 **로그** 열에 있는 **표시**를 선택하여 로그를 표시합니다. 로그를 거의 끝까지 아래로 스크롤하여 다음과 같은 로그 메시지를 찾습니다.

```
...
[2015-05-13T20:03:47+00:00] INFO: Storing updated cookbooks/nodesearch/recipes/default.rb in the cache.
[2015-05-13T20:03:47+00:00] INFO: Storing updated cookbooks/nodesearch/metadata.rb in the cache.
[2015-05-13T20:03:47+00:00] INFO: **********The instance ID is: 'i-8703b570'**********
[2015-05-13T20:03:47+00:00] INFO: Chef Run complete in 0.312518 seconds 
...
```