

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

# Windows 스택에서 노드 검색 인덱스 사용
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-node"></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 액세스를 활성화하는 방법을 설명합니다.

이 예제는 단일 사용자 지정 계층 및 단일 인스턴스를 포함하는 Windows 스택을 기반으로 합니다. Chef 검색을 `node` 검색 인덱스와 함께 사용하여 서버의 퍼블릭 IP 주소를 가져와 `C:\tmp` 디렉터리에서 파일에 기록합니다. 다음은 이 예제를 위한 스택을 생성하는 방법을 간략히 요약한 것입니다. 자세한 내용은 [새 스택 생성](workingstacks-creating.md) 섹션을 참조하세요.

**스택을 만듭니다**

1. [OpsWorks Stacks 콘솔](https://console.aws.amazon.com/opsworks/)을 열고 **스택 추가**를 선택합니다.

1. 다음 설정을 지정하고, 그 외 설정에 대해서는 기본값을 수락한 다음 [**스택 추가**]를 선택합니다.
   + **이름** – NodeSearch
   + **리전** – 미국 서부(오레곤)

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

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

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

   OpsWorks Stacks는이 인스턴스`AWS-OpsWorks-RDP-Server`에를 자동으로 할당하므로 권한 있는 사용자가 인스턴스에 로그인할 수 있습니다.

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

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

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

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

   ```
   name "nodesearch"
   version "0.1.0"
   ```

1. `recipes` 안에 `nodesearch` 디렉터리를 만듭니다.

1. 다음 레시피가 포함된 `default.rb` 파일을 만들어 `recipes` 디렉터리에 저장합니다.

   ```
   directory 'C:\tmp' do
     rights :full_control, 'Everyone'
     recursive true
     action :create
   end
   
   windowsserver = search(:node, "hostname:iptest*").first
   Chef::Log.info("**********The public IP address is: '#{windowsserver[:ipaddress]}'**********")
   
   file 'C:\tmp\addresses.txt' do
     content "#{windowsserver[:ipaddress]}"
     rights :full_control, 'Everyone'
     action :create
   end
   ```

   이 레시피는 다음 작업을 수행합니다.

   1. 디렉터리 리소스를 사용하여 파일을 위한 `C:\tmp` 디렉터리를 만듭니다.

      이 리소스에 대한 자세한 정보는 [예제 3: 디렉터리 생성](cookbooks-101-basics-directories.md) 단원을 참조하세요.

   1. `node` 검색 인덱스와 함께 Chef 검색을 사용하여 `iptest`로 시작하는 호스트 이름이 포함된 노드(인스턴스) 목록을 얻습니다.

      계층의 짧은 이름에 정수를 추가하여 호스트 이름을 생성하는 기본 테마를 사용하는 경우 이 쿼리는 IPTest 계층의 인스턴스를 모두 반환합니다. 예를 들어, 이 계층에는 인스턴스가 하나 뿐인 것으로 알려져 있기 때문에 레시피는 첫 번째 인스턴스만 `windowsserver`에 할당합니다. 인스턴스가 여러 개인 경우 전체 목록을 가져와 인스턴스를 열거할 수 있습니다.

   1. 이 실행을 위해 Chef 로그에 IP 주소와 함께 메시지를 추가합니다.

      `windowsserver` 객체는 `ipaddress` 속성이 인스턴스의 퍼블릭 IP 주소로 설정된 해시 테이블이므로, 후속 레시피 코드의 해당 주소를 `windowsserver[:ipaddress]`로 표현할 수 있습니다. 레시피가 해당 문자열을 메시지에 삽입하고 Chef 로그에 추가합니다.

   1. `file` 리소스를 사용하여 IP 주소가 포함된 `C:\tmp\addresses.txt`라는 파일을 만듭니다.

      이 리소스의 `content` 속성은 파일에 추가할 내용을 지정하는데, 이 경우에는 퍼블릭 IP 주소입니다.

1. `nodesearch`의 `.zip` 아카이브를 생성하고, [이 아카이브를 S3 버킷에 업로드](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html)한 다음, [해당 아카이브를 퍼블릭으로 설정](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html)하고, 아카이브의 URL을 기록합니다.

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

레시피가 성공적으로 실행되면 이를 확인할 수 있습니다.

**nodesearch를 확인하려면**

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

   ```
   ...
   [2015-05-13T18:55:47+00:00] INFO: Storing updated cookbooks/nodesearch/recipes/default.rb in the cache.
   [2015-05-13T18:55:47+00:00] INFO: Storing updated cookbooks/nodesearch/metadata.rb in the cache.
   [2015-05-13T18:55:47+00:00] INFO: **********The public IP address is: '192.0.0.1'**********
   [2015-05-13T18:55:47+00:00] INFO: Processing directory[C:\tmp] action create (nodesearch::default line 1)
   [2015-05-13T18:55:47+00:00] INFO: Processing file[C:\tmp\addresses.txt] action create (nodesearch::default line 10) 
   ...
   ```

1. [RDP를 사용하여 인스턴스에 로그인](workinginstances-rdp.md)하고 `C:\tmp\addresses.txt`의 내용을 확인합니다.