기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
예제 9: Amazon EC2 인스턴스 사용
중요
The AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트
지금까지는 로컬에서 인스턴스를 실행해 왔습니다 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
Amazon EC2 인스턴스를 생성하려면 AWS 자격 증명이 필요합니다. 계정이 없는 경우 다음과 같이 AWS 계정을 만들 수 있습니다.
가입하세요. AWS 계정
가지고 있지 않은 경우 AWS 계정다음 단계를 완료하여 새로 만드세요.
가입하려면 AWS 계정
https://portal.aws.amazon.com/billing/등록
열기. 온라인 지시 사항을 따릅니다.
등록 절차 중 전화를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.
가입할 때 AWS 계정, 그리고 AWS 계정 루트 사용자생성됩니다. 루트 사용자는 모두에 액세스할 수 있습니다. AWS 서비스 및 계정 내 리소스 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 루트 사용자 액세스 권한이 필요한 작업을 수행하는 것입니다.
AWS 가입 절차가 완료되면 확인 이메일을 보냅니다. 언제라도 https://aws.amazon.com/로
관리자 액세스 권한이 있는 사용자 생성
가입한 후 AWS 계정보안을 유지하세요 AWS 계정 루트 사용자, 활성화 AWS IAM Identity Center일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 생성하십시오.
보안을 유지하세요 AWS 계정 루트 사용자
-
에 로그인하기AWS Management Console
루트 사용자를 선택하고 다음을 입력하여 계정 소유자로 등록하십시오. AWS 계정 이메일 주소. 다음 페이지에서 비밀번호를 입력합니다. 루트 사용자로 로그인하는 데 도움이 필요하면 에서 루트 사용자로 로그인을 참조하십시오. AWS 로그인 사용 설명서.
-
루트 사용자에 대한 다단계 인증 (MFA) 을 켜십시오.
지침은 다음을 위한 가상 MFA 장치 활성화를 참조하십시오. AWS 계정 사용 설명서의 루트 IAM 사용자 (콘솔)
관리자 액세스 권한이 있는 사용자 생성
-
IAMID 센터를 활성화합니다.
지침은 활성화를 참조하십시오. AWS IAM Identity Center의 AWS IAM Identity Center 사용 설명서.
-
IAMID 센터에서 사용자에게 관리 액세스 권한을 부여하십시오.
사용에 대한 자습서는 IAM Identity Center 디렉터리 ID 소스로 사용하려면 기본값으로 사용자 액세스 구성을 참조하십시오. IAM Identity Center 디렉터리의 AWS IAM Identity Center 사용자 가이드.
관리 액세스 권한이 있는 사용자로 로그인
-
IAMIdentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 URL 로그인을 사용하십시오.
IAMIdentity Center 사용자를 사용하여 로그인하는 데 도움이 필요하면 로그인을 참조하십시오. AWS포털에 접속할 수 있습니다. AWS 로그인 사용자 가이드.
추가 사용자에게 액세스 권한 할당
EC2Amazon에 액세스할 수 있는 권한을 가진 사용자를 생성하고 사용자의 액세스 및 비밀 키를 워크스테이션의 안전한 위치에 저장해야 합니다. IAM 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 키 페어가 없는 경우, Amazon EC2 키 페어를 생성하는 방법에 대한 자세한 내용은 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 인스턴스의
.kitchen.yml
경우 구성 방법을 설명합니다. 구성 방법은 Amazon EC2 인스턴스에서 훨씬 더 복잡합니다. -
recipes
하위 디렉터리를createdir-ec2
에 추가합니다.
아마존에서.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용 테스트 키친 드라이버를
이 예제는 다음 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
디렉터리에 있습니다. - region
-
(필수) 인스턴스의 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
드라이버는 적절한 AMI 이름을 자동으로 선택하고 SSH 사용자 이름을 생성합니다. 다른 플랫폼(이 예에서는 Amazon Linux 사용)을 사용할 수 있지만 다음 platforms
속성을 명시적으로 지정해야 합니다.
- name
-
플랫폼 이름. 이 예제는 Amazon Linux를 사용하므로
name
이amazon
으로 설정됩니다. - driver
-
다음을 포함하는
driver
속성.-
image_id
— 플랫폼의 AMI 플랫폼은 지정된 지역에 속해야 합니다. 이ami-ed8e9284
예에서는 미국 서부 (캘리포니아 북부) 지역의 Amazon AMI Linux를 사용합니다. -
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 콘솔로
이동하여 미국 서부 (캘리포니아 북부)) 지역을 선택하고 탐색 창에서 [Instances] 를 클릭합니다. 목록에 새로 생성된 인스턴스가 보입니다. -
에서 실행
kitchen login
중인 인스턴스에 대해 수행한 것과 마찬가지로 실행하여 인스턴스에 로그인합니다. VirtualBox/srv
에 새로 생성된 디렉터리가 있습니다. 즐겨찾는 SSH 클라이언트를 사용하여 인스턴스에 연결할 수도 있습니다.