기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
예제 9: Amazon EC2 인스턴스 사용
중요
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 만료되었으며 신규 및 기존 고객 모두에 대해 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 AWS re:Post
지금까지 로컬에서 인스턴스를 실행하고 있습니다 VirtualBox. 빠르고 쉽지만 결국 Amazon EC2 인스턴스에서 레시피를 테스트해야 합니다. 특히 Amazon Linux에서 레시피를 실행하려는 경우 Amazon 에서만 사용할 수 있습니다EC2. 예비 구현 및 테스트를 위해 CentOS와 같은 유사한 시스템을 사용할 수 있지만 Amazon Linux에서 레시피를 완전히 테스트하는 유일한 방법은 Amazon EC2 인스턴스를 사용하는 것입니다.
이 주제에서는 Amazon EC2 인스턴스에서 레시피를 실행하는 방법을 보여줍니다. 다음 두 가지 차이점만 제외하고 Test Kitchen과 Vagrant도 앞 섹션과 거의 같은 방법으로 사용합니다.
-
드라이버가 Vagrant 대신
kitchen-ec2
입니다. -
쿡북의
.kitchen.yml
파일은 Amazon EC2 인스턴스를 시작하는 데 필요한 정보로 구성해야 합니다.
참고
대안적 방법은 vagrant-aws
Vagrant 플러그인을 사용하는 것입니다. 자세한 내용은 Vagrant AWS Provider
Amazon EC2 인스턴스를 생성하려면 AWS 자격 증명이 필요합니다. AWS 계정이 없는 경우 다음과 같이 계정을 얻을 수 있습니다.
에 가입 AWS 계정
가 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.
에 가입하려면 AWS 계정
https://portal.aws.amazon.com/billing/가입을
엽니다. 온라인 지시 사항을 따릅니다.
등록 절차 중 전화를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.
에 가입하면 AWS 계정AWS 계정 루트 사용자이 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 루트 사용자 액세스 권한이 필요한 작업을 수행하는 것입니다.
AWS 는 가입 프로세스가 완료된 후 확인 이메일을 보냅니다. 언제든지 https://aws.amazon.com/
관리자 액세스 권한이 있는 사용자 생성
에 가입한 후 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 AWS 계정보호 AWS IAM Identity Center, AWS 계정 루트 사용자활성화 및 생성합니다.
보안 AWS 계정 루트 사용자
-
루트 사용자를 선택하고 AWS 계정 이메일 주소를 입력하여 계정 소유자AWS Management Console
로에 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다. 루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 AWS 로그인 User Guide의 루트 사용자로 로그인을 참조하세요.
-
루트 사용자에 대해 다중 인증(MFA)을 켭니다.
지침은 IAM 사용 설명서의 AWS 계정 루트 사용자(콘솔)에 대한 가상 MFA 디바이스 활성화를 참조하세요.
관리자 액세스 권한이 있는 사용자 생성
-
IAM Identity Center를 활성화합니다.
지침은 AWS IAM Identity Center 사용 설명서의 AWS IAM Identity Center설정을 참조하세요.
-
IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.
를 자격 증명 소스 IAM Identity Center 디렉터리 로 사용하는 방법에 대한 자습서는 AWS IAM Identity Center 사용 설명서의 기본값으로 사용자 액세스 구성을 IAM Identity Center 디렉터리 참조하세요.
관리 액세스 권한이 있는 사용자로 로그인
-
IAM Identity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송URL된 로그인을 사용합니다.
IAM Identity Center 사용자를 사용하여 로그인하는 데 도움이 필요하면 AWS 로그인 사용 설명서의 AWS 액세스 포털에 로그인을 참조하세요.
추가 사용자에게 액세스 권한 할당
-
IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.
지침은AWS IAM Identity Center 사용 설명서의 Create a permission set를 참조하세요.
-
사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.
지침은 AWS IAM Identity Center 사용 설명서의 Add groups를 참조하세요.
Amazon에 액세스할 수 있는 권한이 있는 IAM 사용자를 생성하고 사용자의 액세스 및 보안 키를 워크스테이션의 안전한 위치에 EC2 저장해야 합니다. Test Kitchen은 이 자격 증명을 사용하여 인스턴스를 생성합니다. Test Kitchen에 자격 증명을 제공하는 선호되는 방법은 워크스테이션에서 다음 환경 변수에 키를 할당하는 것입니다.
주의
IAM 사용자에게는 보안 위험이 있는 장기 보안 인증 정보가 있습니다. 이 위험을 줄이려면 이러한 사용자에게 작업을 수행하는 데 필요한 권한만 제공하고 더 이상 필요하지 않을 경우 이러한 사용자를 제거하는 것이 좋습니다.
-
AWS_ACCESS_KEY - 사용자의 액세스 키로, 다음과 같습니다.AKIAIOSFODNN7EXAMPLE.
-
AWS_SECRET_KEY - 사용자의 보안 키로, 다음과 같습니다.wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.
이 방법은 예컨대 자격 증명이 포함된 프로젝트를 퍼블릭 리포지토리에 업로드함으로써 뜻하지 않게 계정이 침해될 가능성을 줄입니다.
쿡북을 설정하려면
-
kitchen-ec2
드라이버를 사용하려면 시스템에ruby-dev
패키지가 설치되어 있어야 합니다. 다음 예제 명령은aptitude
를 사용하여 Ubuntu 시스템에 패키지를 설치하는 방법을 보여줍니다.sudo aptitude install ruby1.9.1-dev
-
kitchen-ec2
드라이버는 다음과 같이 설치할 수 있는 Gem입니다.gem install kitchen-ec2
워크스테이션에 따라이 명령에가 필요
sudo
하거나 같은 Ruby 환경 관리자를 사용할 수도 있습니다RVM. 이 절차는 kitchen-ec2
드라이버 버전 0.8.0에서 테스트했으나 최신 버전이 있습니다. 특정 버전을 설치하려면 gem install kitchen-ec2 -v <
를 실행합니다.version number
> -
Test Kitchen이 인스턴스에 연결하는 데 사용할 수 있는 Amazon EC2 SSH 키 페어를 지정해야 합니다. Amazon EC2 키 페어가 없는 경우 Amazon 키 페어를 생성하는 방법에 대한 자세한 내용은 Amazon EC2 키 페어를 참조하세요. 키 페어는 인스턴스와 동일한 AWS 리전에 속해야 합니다. 이 예에서는 미국 서부(캘리포니아 북부)를 사용합니다.
키 페어를 선택한 후에는
opsworks_cookbooks
의 하위 디렉터리로ec2_keys
를 만들고 해당 키 페어의 프라이빗 키(.pem
) 파일을 이 하위 디렉터리에 복사합니다. 프라이빗 키는 시스템의 모든 위치에 저장할 수 있지만ec2_keys
에 저장하면 코드가 간소화되어 편리합니다. -
createdir-ec2
의 하위 디렉터리opsworks_cookbooks
를 만들고 그 디렉터리로 이동합니다. -
createdir-ec2
에 다음 콘텐츠가 포함된metadata.rb
파일을 추가합니다.name "createdir-ec2" version "0.1.0"
-
예제 1: 패키지 설치 단원에서 설명하는 대로 Test Kitchen을 초기화합니다. 다음 섹션에서는 Amazon EC2 인스턴스에
.kitchen.yml
훨씬 더 복잡한를 구성하는 방법을 설명합니다. -
recipes
하위 디렉터리를createdir-ec2
에 추가합니다.
Amazon용 .kitchen.yml 구성 EC2
kitchen-ec2
드라이버가 적절하게 구성된 Amazon EC2 인스턴스를 시작하는 데 필요한 .kitchen.yml
정보로를 구성합니다. 다음은 미국 서부(캘리포니아 북부) 리전의 Amazon Linux 인스턴스용 .kitchen.yml
파일의 예입니다.
driver: name: ec2 aws_ssh_key_id: US-East1 region: us-west-1 availability_zone: us-west-1c require_chef_omnibus: true security_group_ids:
sg........
subnet_id:subnet-.........
associate_public_ip: true interface: dns provisioner: name: chef_solo platforms: -name: amazon driver: image_id:ami-xxxxxxxx
transport: username: ec2-user ssh_key: ../ec2_keys/US-East1.pem suites: - name: default run_list: - recipe[createdir-ec2::default] attributes:
provisioner
및 suites
섹션의 기본 설정을 사용할 수 있지만 기본 driver
및 platforms
설정을 수정해야 합니다. 이 예제에서는 최소한의 설정 목록을 사용하며 나머지에 대해서는 기본값을 사용합니다. 전체 kitchen-ec2
설정 목록은 Kitchen::Ec2: Amazon용 테스트 키친 드라이버를 EC2
이 예제는 다음 driver
속성을 설정합니다. 이 예제에서는 앞서 설명한 것처럼 사용자의 액세스 키와 보안 키를 표준 환경 변수에 할당했다고 가정합니다. 드라이버는 기본적으로 이러한 키를 사용합니다. 그렇지 않은 경우, aws_access_key_id
와 aws_secret_access_key
를 driver
속성에 추가하여 명시적으로 키를 지정하고 적절한 키 값으로 설정해야 합니다.
- name
-
(필수) 이 속성은
ec2
로 설정해야 합니다. - aws_ssh_key_id
-
(필수)이 예제
US-East1
에서 이름이 인 Amazon EC2 SSH 키 페어 이름입니다. - transport.ssh_key
-
(필수)
aws_ssh_key_id
에 대해 지정한 키의 프라이빗 키(.pem
) 파일. 이 예제에서 이 파일은US-East1.pem
으로 명명되며../opsworks/ec2_keys
디렉터리에 있습니다. - 리전
-
(필수) 인스턴스의 AWS 리전입니다. 이 예에서는) 로
us-west-1
표시되는 미국 서부(캘리포니아 북부)를 사용합니다. - availability_zone
-
(선택 사항) 인스턴스의 가용 영역. 이 설정을 생략하면 Test Kitchen은 지정된 리전에 대해 기본 가용 영역(
us-west-1b
의 경우, 미국 서부(캘리포니아 북부))를 사용합니다. 하지만 이 가용 영역은 사용자 계정에서 사용하지 못할 수 있습니다. 이 경우, 가용 영역을 명시적으로 지정해야 합니다. 마침 이 예제를 준비하는 데 사용된 계정이us-west-1b
를 지원하지 않기 때문에 예제는 명시적으로us-west-1c
를 지정합니다. - require_chef_omnibus
-
이 설정을
true
로 설정하면 omnibus installer를 사용하여 모든 플랫폼 인스턴스에chef-client
를 설치합니다. - security_group_ids
-
(선택 사항) 인스턴스에 IDs 적용할 보안 그룹 목록입니다. 이 설정은
default
보안 그룹을 인스턴스에 적용합니다. 보안 그룹 수신 규칙이 인바운드 SSH 연결을 허용하는지 확인합니다. 그렇지 않으면 Test Kitchen이 인스턴스와 통신할 수 없습니다.default
보안 그룹을 사용하는 경우, 그에 맞게 편집해야 할 수 있습니다. 자세한 내용은 Amazon EC2 보안 그룹을 참조하세요. - subnet_id
-
인스턴스의 대상 서브넷 ID(해당되는 경우).
- associate_public_ip
-
인터넷에서 인스턴스에 액세스하려는 경우 Amazon이 퍼블릭 IP 주소를 인스턴스와 EC2 연결하도록 할 수 있습니다.
- 인터페이스
-
인스턴스에 액세스하는 데 사용하는 호스트 이름 구성 형식. 유효한 값은
dns
,public
,private
또는private_dns
입니다. 이 속성의 값을 지정하지 않으면kitchen-ec2
이 다음 순서로 호스트 이름 구성을 설정합니다. 이 속성을 생략하면 구성 형식이 설정되지 않습니다.-
DNS 이름
-
퍼블릭 IP 주소
-
프라이빗 IP 주소
-
프라이빗 DNS 이름
-
중요
액세스 키와 보안 키에 계정 자격 증명을 사용하는 대신 사용자를 생성해 이러한 자격 증명을 Test Kitchen에 제공해야 합니다. 자세한 내용은 AWS 액세스 키 관리 모범 사례를 참조하세요.
퍼블릭 GitHub 또는 Bitbucket 리포지토리.kitchen.yml
에 업로드하는 등 공개적으로 액세스할 수 있는 위치에 두지 않도록 주의하십시오. 그러면 자격 증명이 노출되고 계정의 보안이 훼손될 수 있습니다.
kitchen-ec2
드라이버는 다음 플랫폼에 대한 기본 지원을 제공합니다.
-
ubuntu-10.04
-
ubuntu-12.04
-
ubuntu-12.10
-
ubuntu-13.04
-
ubuntu-13.10
-
ubuntu-14.04
-
centos-6.4
-
debian-7.1.0
-
windows-2012r2
-
windows-2008r2
이런 플랫폼을 하나 이상 사용하려는 경우, 적절한 플랫폼 이름을 platforms
에 추가합니다. kitchen-ec2
드라이버는 적절한를 자동으로 선택하고 SSH 사용자 이름을 AMI 생성합니다. 다른 플랫폼(이 예에서는 Amazon Linux 사용)을 사용할 수 있지만 다음 platforms
속성을 명시적으로 지정해야 합니다.
- name
-
플랫폼 이름. 이 예제는 Amazon Linux를 사용하므로
name
이amazon
으로 설정됩니다. - driver
-
다음을 포함하는
driver
속성.-
image_id
- 플랫폼의 AMI로, 지정된 리전에 속해야 합니다. 이 예제에서는 미국 서부(캘리포니아 북부) 리전AMI의 Amazon Linuxami-ed8e9284
인를 사용합니다. -
transport.username
- Test Kitchen이 인스턴스와 통신하는 데 사용할 SSH 사용자 이름입니다.Amazon Linux의 경우,
ec2-user
를 사용합니다. 다른 사용자 이름은 다를 AMIs 수 있습니다.
-
.kitchen.yml
의 코드를 예제로 바꾸고 aws_access_key_id
와 같은 계정별 속성에 적절한 값을 할당합니다.
레시피 실행
이 예제는 반복의 레시피를 사용합니다.
레시피를 실행하려면
-
다음 코드를 사용하여
default.rb
파일을 만들어 이 파일을 쿡북의recipes
폴더에 저장합니다.directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
-
kitchen converge
를 실행하여 레시피를 실행합니다. Amazon EC2 인스턴스를 시작하고 초기화하는 데 필요한 시간으로 인해이 명령을 완료하는 데 이전 예제보다 시간이 오래 걸립니다. -
Amazon EC2 콘솔
로 이동하여 미국 서부(캘리포니아 북부) 리전을 선택하고 탐색 창에서 인스턴스를 클릭합니다. 목록에 새로 생성된 인스턴스가 보입니다. -
를 실행
kitchen login
하여에서 실행되는 인스턴스에 대해 하던 것처럼 인스턴스에 로그인합니다 VirtualBox./srv
에 새로 생성된 디렉터리가 있습니다. 또한 선호하는 SSH 클라이언트를 사용하여 인스턴스에 연결할 수 있습니다.