

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

# Windows PowerShell 스크립트 실행
<a name="cookbooks-101-opsworks-opsworks-powershell"></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 액세스](cookbooks-101-opsworks-opsworks-windows.md#cookbooks-101-opsworks-opsworks-windows-rdp)를 활성화하는 방법을 설명합니다.

레시피가 Windows 인스턴스에서 작업, 특히 해당 Chef 리소스가 없는 작업을 수행하도록 하는 한 가지 방법은 레시피에서 Windows PowerShell 스크립트를 실행하도록 하는 것입니다. 이 섹션에서는 Windows PowerShell 스크립트를 사용하여 Windows 기능을 설치하는 방법을 설명하면서 기본 사항을 소개합니다.

[https://docs.chef.io/chef/resources.html#powershell-script](https://docs.chef.io/chef/resources.html#powershell-script) 리소스는 인스턴스에서 Windows PowerShell cmdlet을 실행합니다. 다음 예제는 [Install-WindowsFeature cmdlet](https://technet.microsoft.com/en-us/library/hh849795.aspx)을 사용하여 인스턴스에 XPS 뷰어를 설치합니다.

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

**스택을 만듭니다**

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

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

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

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

1. [**권한**] 및 [**편집**]을 차례대로 선택하고 [**SSH/RDP**] 및 [**sudo/admin**]을 선택합니다. 인스턴스에 일반 사용자로 로그인하려면 `AWS-OpsWorks-RDP-Server` 보안 그룹 이외에 이러한 권한 부여가 필요합니다.

인스턴스가 시작되는 동안(보통 몇 분 정도 소요됨) 쿡북을 생성할 수 있습니다. 이 예제의 레시피는 데이터 디렉터리를 생성하며, 기본적으로 [예제 3: 디렉터리 생성](cookbooks-101-basics-directories.md)의 레시피를 Windows용으로 수정한 것입니다.

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

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

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

   ```
   name "powershell"
   version "0.1.0"
   ```

1. `recipes` 디렉터리 내에 `powershell` 디렉터리를 만듭니다.

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

   ```
   Chef::Log.info("******Installing XPS.******")
   
   powershell_script "Install XPS Viewer" do
     code <<-EOH
       Install-WindowsFeature XPS-Viewer
     EOH
     guard_interpreter :powershell_script
     not_if "(Get-WindowsFeature -Name XPS-Viewer).installed"
   end
   ```
   + `powershell_script` 리소스가 cmdlet을 실행해 XPS 뷰어를 설치합니다.

     이 예제에서는 cmdlet을 하나만 실행하지만 `code` 블록에는 명령줄을 무제한 포함할 수 있습니다.
   + `guard_interpreter` 속성은 Chef에 Windows PowerShell의 64비트 버전을 사용하도록 지시합니다.
   + `not_if` 보호 속성은 Chef가 이미 설치된 기능을 설치하지 않도록 합니다.

1. `powershell` 디렉터리의 `.zip` 아카이브를 생성합니다.

1. [아카이브를 Amazon 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. **사용자 지정 쿡북 업데이트**가 완료되면 **실행할 레시피**가 **powershell::default**로 설정된 상태에서 [**레시피 실행** 스택 명령](workingstacks-commands.md)을 실행하여 레시피를 실행합니다. 

**참고**  
이 예제에서는 편의상 **레시피 실행**을 사용하지만 일반적으로 OpsWorks Stacks가 레시피를 적절한 수명 주기 이벤트에 할당하여 [레시피를 자동으로 실행](workingcookbook-assigningcustom.md)하도록 합니다. 수동으로 이벤트를 트리거하여 그러한 레시피를 실행할 수 있습니다. 스택 명령을 사용하여 설정 및 Configure 이벤트를 트리거할 수 있고, [배포 명령](workingapps-deploying.md)을 사용하여 Deploy 및 Undeploy 이벤트를 트리거할 수 있습니다.

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

**powershell 레시피를 확인하려면**

1. [Chef 로그](troubleshoot-debug-log.md)를 확인합니다. powershell1 인스턴스의 **로그** 열에서 **표시**를 클릭하여 로그를 표시합니다. 아래로 스크롤하면 맨 아래 근처에 로그 메시지가 보입니다.

   ```
   ...
   [2015-04-27T18:12:09+00:00] INFO: Storing updated cookbooks/powershell/metadata.rb in the cache.
   [2015-04-27T18:12:09+00:00] INFO: ******Installing XPS.******
   [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Install XPS Viewer] action run (powershell::default line 3)
   [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Guard resource] action run (dynamically defined)
   [2015-04-27T18:12:42+00:00] INFO: powershell_script[Install XPS Viewer] ran successfully 
   ...
   ```

1. [RDP를 사용하여 인스턴스에 로그인](workinginstances-rdp.md)하고 [**시작**] 메뉴를 엽니다. XPS 뷰어가 [**Windows 액세서리**]와 함께 나열되어야 합니다.