레시피 - AWS OpsWorks

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

레시피

중요

The AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트 또는 스루 AWS 프리미엄 지원.

레시피는 시스템 구성을 정의하는 Ruby 애플리케이션입니다. 패키지를 설치하고, 템플릿에서 구성 파일을 생성하고, shell 명령을 실행하고, 파일 및 디렉터리를 생성하는 등의 작업을 수행합니다. 일반적으로 다음과 같은 혜택이 있습니다. AWS OpsWorks 인스턴스에서 수명 주기 이벤트가 발생하면 스택이 레시피를 자동으로 실행하지만 Execute Recipes stack 명령을 사용하여 언제든지 명시적으로 실행할 수도 있습니다. 자세한 정보는 About Recipes를 참조하세요.

대개 레시피는 일련의 리소스로 구성되는데, 각 리소스는 시스템 특정 측면에 대해 원하는 값을 나타냅니다. 각 리소스는 원하는 상태를 정의하는 속성 세트를 포함하며 수행될 작업을 지정합니다. Chef는 각 리소스를 작업을 수행하는 적절한 공급자와 연결합니다. 자세한 정보는 Resources and Providers Reference를 참조하세요.

package 리소스는 Linux 인스턴스에서 소프트웨어 패키지를 관리하는 데 유용합니다. 다음 예제에서는 Apache 패키지를 설치합니다.

... package 'apache2' do case node[:platform] when 'centos','redhat','fedora','amazon' package_name 'httpd' when 'debian','ubuntu' package_name 'apache2' end action :install end ...

Chef는 플랫폼에 적절한 패키지 공급자를 사용합니다. 리소스 속성은 단순히 할당된 값일 경우가 많지만, Ruby 논리 연산을 사용하여 조건 할당도 가능합니다. 예제에서는 case 연산자가 사용됩니다. 이 연산자는 node[:platform]를 사용하여 인스턴스의 운영 체제를 식별하고 그 결과에 따라 package_name 속성을 설정합니다. 표준 Chef 노드 구문을 사용하여 레시피에 속성을 삽입할 수 있으며, Chef가 해당 속성을 연결된 값으로 대체합니다. 쿡북 속성뿐 아니라 노드 객체의 모든 속성을 사용할 수 있습니다.

적절한 패키지 이름을 결정하면 코드 세그먼트가 패키지를 설치하는 install 작업으로 끝납니다. 이 리소스에 대한 다른 작업은 upgraderemove를 포함합니다. 자세한 정보는 package를 참조하세요.

복잡한 설치 및 구성 작업을 하나 이상의 하위 작업으로 분할하고 각각 별도의 레시피로 구현한 후 주 레시피가 적절한 시간에 각 레시피를 실행하게 하는 것이 유용할 경우가 많습니다. 다음 예제는 이전 예제에 이어지는 코드입니다.

include_recipe 'apache2::service'

레시피가 하위 레시피를 실행하도록 하려면 include_recipe 키워드와 그 뒤에 레시피 이름을 사용합니다. 레시피는 표준 Chef CookbookName::RecipeName 구문을 사용하여 식별됩니다. 여기서 RecipeName에는 .rb 확장명을 생략합니다.

참고

include_recipe 문은 주 레시피에서 해당 지점의 레시피를 효과적으로 실행합니다. 하지만 실제로는 Chef가 각 include_recipe 문을 지정된 레시피의 코드로 대체한 후 주 레시피를 실행합니다.

directory 리소스는 디렉터리를 나타냅니다(예: 패키지 파일이 저장된 디렉터리). 다음 default.rb 리소스는 Linux 로그 디렉터리를 생성합니다.

directory node[:apache][:log_dir] do mode 0755 action :create end

로그 디렉터리는 쿡북의 속성 파일 중 하나에서 정의됩니다. 이 리소스는 디렉터리 모드를 0755로 지정하며, create 작업을 사용하여 디렉터리를 생성합니다. 자세한 정보는 directory를 참조하세요. 이 리소스를 Windows 인스턴스에서도 사용할 수 있습니다.

execute 리소스는 명령을 나타냅니다(예: shell 명령 또는 스크립트). 다음 예제는 module.load 파일을 생성합니다.

execute 'generate-module-list' do if node[:kernel][:machine] == 'x86_64' libdir = 'lib64' else libdir = 'lib' end command "/usr/local/bin/apache2_module_conf_generate.pl /usr/#{libdir}/httpd/modules /etc/httpd/mods-available" action :run end

먼저 리소스가 유형을 결정합니다. CPU [:kernel][:machine]Chef가 다양한 시스템 속성을 나타내기 위해 생성하는 또 다른 자동 속성 (이 경우에는 CPU 유형) 입니다. 그런 다음 명령 Perl 스크립트를 지정하고 run 작업을 사용하여 스크립트를 실행합니다. 그러면 module.load 파일이 생성됩니다. 자세한 정보는 실행을 참조하세요.

template 리소스는 쿡북의 템플릿 파일 중 하나에서 생성되는 파일(일반적으로 구성 파일)을 나타냅니다. 다음 예제는 템플릿 단원에 설명된 apache2.conf.erb 템플릿으로부터 httpd.conf 구성 파일을 생성합니다.

template 'apache2.conf' do case node[:platform] when 'centos','redhat','fedora','amazon' path "#{node[:apache][:dir]}/conf/httpd.conf" when 'debian','ubuntu' path "#{node[:apache][:dir]}/apache2.conf" end source 'apache2.conf.erb' owner 'root' group 'root' mode 0644 notifies :restart, resources(:service => 'apache2') end

이 리소스는 인스턴스의 운영 체제에 따라 생성된 파일의 이름 및 위치를 결정합니다. 그런 다음 apache2.conf.erb를 파일을 생성하는 데 사용할 템플릿으로 지정하고 파일의 소유자, 그룹 및 모드를 설정합니다. 이 리소스는 notify 작업을 실행하여 Apache 서버를 나타내는 service 리소스에 서버를 재시작하라고 알립니다. 자세한 정보는 template 단원을 참조하세요.