

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

# Windows 인스턴스에 패키지 설치
<a name="cookbooks-101-opsworks-install-software-package"></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 액세스를 활성화하는 방법을 설명합니다.

소프트웨어가 MSI와 같은 설치 프로그램 관리자로 제공될 경우 파일을 인스턴스로 다운로드하여 실행해야 합니다. 이 예제는 연결된 환경 변수를 정의하는 방법을 포함하여 MSI 패키지 형태의 Python 런타임을 설치하는 쿡북을 구현하는 방법을 보여줍니다. IIS와 같은 Windows 기능을 설치하는 방법에 대한 자세한 정보는 [Windows 기능 설치: IIS](cookbooks-101-opsworks-install-software-feature.md) 단원을 참조하세요.

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

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

1. `installpython`에 다음 콘텐츠가 포함된 `metadata.rb` 파일을 추가합니다.

   ```
   name "installpython"
   version "0.1.0"
   ```

1. `installpython`에 `recipes` 및 `files` 디렉터리를 추가하고 파일에 `default` 디렉터리를 추가합니다.

1. [Windows용 Python 버전](https://www.python.org/downloads/windows/)에서 쿡북의 `files\default` 디렉터리로 Python 패키지를 다운로드합니다. 이 예제에서는 `python-3.4.3.amd64.msi`라는 MSI 설치 관리자를 사용하는 Python 3.5.0a3의 Windows x86-64 버전을 설치합니다.

1. 다음 레시피 코드가 포함된 `default.rb` 파일을 `recipes` 디렉터리에 추가합니다.

   ```
   directory 'C:\tmp' do
     rights :full_control, 'Everyone'
     recursive true
     action :create
   end
   
   cookbook_file 'C:\tmp\python-3.4.3.amd64.msi' do
     source "python-3.4.3.amd64.msi"
     rights :full_control, 'Everyone'
     action :create
   end
   
   windows_package 'python' do
     source 'C:\tmp\python-3.4.3.amd64.msi'
     action :install
   end
   
   env "PATH" do
     value 'c:\python34'
     delim ";"
     action :modify
   end
   ```

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

   1. [디렉터리](https://docs.chef.io/chef/resources.html#directory) 리소스를 사용하여 `C:\tmp` 디렉터리를 만듭니다.

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

   1. [cookbook\$1file](https://docs.chef.io/chef/resources.html#cookbook-file) 리소스를 사용하여 쿡북의 `files\default` 디렉터리에서 `C:\tmp`로 설치 관리자를 복사합니다.

      이 리소스에 대한 자세한 정보는 [쿡북에서 파일 설치](cookbooks-101-basics-files.md#cookbooks-101-basics-files-cookbook_file) 단원을 참조하세요.

   1. [windows\$1package](https://docs.chef.io/chef/resources.html#windows-package) 리소스를 사용하여 `c:\python34`에 Python을 설치하는 MSI 설치 관리자를 실행합니다.

      이 설치 관리자는 필수 디렉터리를 만들고 파일을 설치하지만 시스템의 `PATH` 환경 변수를 수정하지는 않습니다.

   1. [env](https://docs.chef.io/chef/resources.html#env) 리소스를 사용하여 시스템 경로에 `c:\python34`를 추가합니다.

      env 리소스를 사용하여 환경 변수를 정의합니다. 이 경우, 레시피를 사용하면 경로에 `c:\python34`를 추가하여 명령줄에서 Python 스크립트를 쉽게 실행할 수 있습니다.
      + 리소스 이름은 이 예제에 필요한 환경 변수의 이름인 `PATH`를 지정합니다.
      + `value` 특성은 이 예제에 필요한 변수 값 `c:\\python34`를 지정합니다(`\` 문자를 이스케이프해야 함).
      + `:modify` 작업은 변수의 현재 값 앞에 지정된 값을 추가합니다.
      + `delim` 속성은 새 값을 기존 값과 구분하는 구분 기호를 지정합니다. 이 예제에서는 `;`입니다.

1. `installpython`의 `.zip` 아카이브를 만들고 그 아카이브를 S3 버킷에 업로드하고 퍼블릭으로 지정합니다. 나중에 사용하기 위해 아카이브의 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) 단원을 참조하세요.

다음과 같이 이 예제를 위한 스택을 생성합니다. 기존의 Windows 스택을 사용할 수도 있습니다. 나중에 설명하듯이 쿡북을 업데이트하면 됩니다.

**스택을 만듭니다**

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

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

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

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

인스턴스가 온라인 상태로 전환되면 쿡북을 설치하고 레시피를 실행할 수 있습니다.

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

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

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

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

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

1. 설치를 확인하려면 [RDP를 사용하여 인스턴스에 연결](workinginstances-rdp.md)한 다음 Windows 탐색기를 엽니다.
   + 이제 파일 시스템에 `C:\Python34` 디렉터리가 있을 것입니다.
   + 명령줄에서 `path`를 실행하면 그 결과는 `PATH=c:\python34;C:\Windows\system32;...`와 유사해야 합니다.
   + 명령줄에서 `python --version`을 실행하면 `Python 3.4.3`을 반환해야 합니다.