cfn-hup
헬퍼는 리소스 메타데이터의 변경 사항을 감지하고 변경 사항이 감지되면 사용자 지정 작업을 실행하는 대몬(daemon)입니다. 따라서 UpdateStack
API 작업을 통해 실행 중인 Amazon EC2 인스턴스에 대한 구성 업데이트를 수행할 수 있습니다.
구문
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
옵션
명칭 | 설명 | 필수 |
---|---|---|
|
|
No |
|
이 옵션을 지정하면 |
No |
|
이 옵션을 지정하면 상세 정보 표시 모드를 사용합니다. |
No |
cfn-hup.conf 구성 파일
cfn-hup.conf
파일은 cfn-hup
대몬이 대상으로 지정한 스택의 이름과 AWS 자격 증명을 저장합니다.
cfn-hup.conf
파일은 다음 형식을 사용합니다.
[main]
stack=<stack-name-or-id>
명칭 | 설명 | 필수 |
---|---|---|
|
스택 이름 또는 ID입니다. 유형: 문자열 |
예 |
|
명령줄 도구에서 사용하는 것과 동일한 형식의 소유자 전용 자격 증명 파일입니다. 유형: 문자열 조건: |
No |
|
인스턴스와 연결되는 IAM 역할의 이름입니다. 유형: 문자열 |
No |
|
스택이 포함된 AWS 리전의 이름입니다. 예: us-east-2 |
No |
|
앞에 0을 사용하거나 사용하지 않고 이 값을 지정할 수 있습니다. 두 경우 모두 Linux 유형: 기본값: |
No |
|
리소스 메타데이터에 대한 변경 사항이 있는지 확인하는 데 사용되는 간격(분)입니다. 유형: 정수 기본값: |
No |
|
상세 정보 로깅을 사용할지 여부를 지정합니다. 유형: 부울 기본값: |
No |
hooks.conf
구성 파일
cfn-hup
대몬이 정기적으로 직접적으로 호출하는 사용자 작업은 hooks.conf
구성 파일에서 정의됩니다. hooks.conf
파일은 다음 형식을 사용합니다.
[hookname]
triggers=post.add or
post.update or
post.remove
path=Resources.<logicalResourceId>
(.Metadata or
.PhysicalResourceId)(.<optionalMetadatapath>
)
action=<arbitrary shell command>
runas=<runas user>
이 작업이 실행될 때는 (cfn-hup
가 있는) 현재 환경의 사본에서 실행되며 CFN_OLD_METADATA
는 path로 지정된 이전 메타데이터 값으로, CFN_NEW_METADATA
는 현재 메타데이터 값으로 설정됩니다.
후크 구성 파일은 cfn-hup
대몬이 시작될 때만 로드되므로 새 후크를 사용하려면 대몬을 다시 시작해야 합니다. 이전 메타데이터 값의 캐시는 /var/lib/cfn-hup/data/metadata_db
에 저장됩니다. 이 캐시를 삭제하여 cfn-hup
가 모든 post.add
작업을 다시 실행하도록 강제할 수 있습니다.
명칭 | 설명 | 필수 |
---|---|---|
|
이 후크의 고유 이름입니다. 유형: 문자열 |
예 |
|
감지할 조건의 쉼표로 구분된 목록입니다. 유효한 값: 예: |
예 |
|
메타데이터 객체의 경로입니다. 메타데이터 블록 내에서 임의 깊이의 경로를 지원합니다. 경로 형식 옵션
|
예 |
|
그대로 실행되는 임의 셸 명령입니다. |
예 |
|
명령을 실행할 사용자입니다. |
예 |
hooks.d
디렉터리
변경 알림 후크를 배포하는 여러 애플리케이션의 구성을 지원하기 위해 cfn-hup
에서는 후크 구성 디렉터리에 있는 hooks.d
디렉터리를 지원합니다. hooks.d
디렉터리에는 후크 구성 파일을 하나 이상 추가로 저장할 수 있습니다. 추가 후크 파일은 hooks.conf
파일과 동일한 레이아웃을 사용해야 합니다.
cfn-hup
대몬은 이 디렉터리의 각 파일을 구문 분석하고 로드합니다. hooks.d
디렉터리에 있는 후크가 hooks.conf
에 있는 후크와 이름이 같으면 후크가 병합됩니다(즉, 두 파일 모두가 지정하는 모든 값에 대해 hooks.d
가 hooks.conf
를 덮어 씀).
예시
다음 예제에서는 LaunchConfig
리소스와 연결된 AWS::CloudFormation::Init
리소스를 변경하면 CloudFormation이 cfn-auto-reloader.conf
후크 파일을 트리거합니다.
JSON
...
"LaunchConfig": {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"QBVersion": {"Ref": "paramQBVersion"},
"AWS::CloudFormation::Init" : {
...
"/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
"content": { "Fn::Join": [ "", [
"[cfn-auto-reloader-hook]\n",
"triggers=post.update\n",
"path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
"action=/opt/aws/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configsets wordpress_install ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"runas=root\n"
]]},
"mode" : "000400",
"owner" : "root",
"group" : "root"
}
...
YAML
...
LaunchConfig:
Type: "AWS::AutoScaling::LaunchConfiguration"
Metadata:
QBVersion: !Ref paramQBVersion
AWS::CloudFormation::Init:
...
/etc/cfn/hooks.d/cfn-auto-reloader.conf:
content: !Sub |
[cfn-auto-reloader-hook]
triggers=post.update
path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init
action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
runas=root
mode: "000400"
owner: "root"
group: "root"
...
관련 리소스
샘플 템플릿은 AWS CloudFormation 사용 설명서의 CloudFormation을 사용하여 Amazon EC2에 애플리케이션 배포를 참조하세요.