cfn-hup
설명
cfn-hup 헬퍼는 리소스 메타데이터의 변경 사항을 감지하고 변경 사항이 감지되면 사용자 지정 작업을 실행하는 데몬입니다. 따라서 UpdateStack
API 작업을 통해 실행 중인 Amazon EC2 인스턴스에 대한 구성 업데이트를 수행할 수 있습니다.
구문
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
옵션
명칭 | 설명 | 필수 |
---|---|---|
|
cfn-hup 스크립트가 |
아니요 |
|
이 옵션을 지정하면 cfn-hup 스크립트를 한 번 실행한 다음 종료합니다. |
아니요 |
|
이 옵션을 지정하면 상세 정보 표시 모드를 사용합니다. |
아니요 |
cfn-hup.conf 구성 파일
cfn-hup.conf 파일은 cfn-hup 데몬이 대상으로 지정한 스택의 이름과 AWS 자격 증명을 저장합니다.
cfn-hup.conf 파일은 다음 형식을 사용합니다.
[main] stack=
<stack-name-or-id>
명칭 | 설명 | 필수 |
---|---|---|
|
스택 이름 또는 ID입니다. 유형: 문자열 |
예 |
|
명령줄 도구에서 사용하는 것과 동일한 형식의 소유자 전용 자격 증명 파일입니다. 유형: 문자열 조건: |
아니요 |
|
인스턴스와 연결되는 IAM 역할의 이름입니다. 유형: 문자열 |
아니요 |
|
스택이 포함된 AWS 리전의 이름입니다. 예: us-east-2 |
아니요 |
|
cfn-hup 데몬에 사용되는 umask입니다. 앞에 0을 사용하거나 사용하지 않고 이 값을 지정할 수 있습니다. 두 경우 모두 Linux 유형: 기본값: |
아니요 |
|
리소스 메타데이터에 대한 변경 사항이 있는지 확인하는 데 사용되는 간격(분)입니다. 유형: 정수 기본값: |
아니요 |
|
상세 정보 로깅을 사용할지 여부를 지정합니다. 유형: 부울 기본값: |
아니요 |
hooks.conf 구성 파일
cfn-hup 데몬이 정기적으로 호출하는 사용자 작업은 hooks.conf 구성 파일에서 정의됩니다. hooks.conf 파일은 다음 형식을 사용합니다.
[hookname] triggers=post.add
or
post.updateor
post.remove path=Resources.<logicalResourceId>
(.Metadataor
.PhysicalResourceId)(.<optionalMetadatapath>
) action=<arbitrary shell command>
runas=<runas user>
이 작업이 실행될 때는 현재 환경(cfn-hup가 있는)의 사본에서 실행되며 CFN_OLD_METADATA는 path로 지정된 이전 메타데이터 값으로, CFN_NEW_METADATA는 현재 메타데이터 값으로 설정됩니다.
후크 구성 파일은 cfn-hup 대몬(daemon)이 시작될 때만 로드되므로 새 후크를 사용하려면 대몬(daemon)을 다시 시작해야 합니다. 이전 메타데이터 값의 캐시는 /var/lib/cfn-hup/data/metadata_db에 저장됩니다. 이 캐시를 삭제하여 cfn-hup가 모든 post.add 작업을 다시 강제로 실행하도록 할 수 있습니다.
명칭 | 설명 | 필수 |
---|---|---|
|
이 후크의 고유 이름입니다. 유형: 문자열 |
예 |
|
감지할 조건의 쉼표로 구분된 목록입니다. 유효한 값: 예: |
예 |
|
메타데이터 객체의 경로입니다. 메타데이터 블록 내에서 임의 깊이의 경로를 지원합니다. 경로 형식 옵션
|
예 |
|
그대로 실행되는 임의 셸 명령입니다. |
예 |
|
명령을 실행하는 사용자입니다. Cfn-hup에서는 su 명령을 사용하여 이 사용자로 전환합니다. |
예 |
hooks.d 디렉터리
변경 알림 후크를 배포하는 여러 애플리케이션의 구성을 지원하기 위해 cfn-hup에서는 후크 구성 디렉터리에 있는 hooks.d 디렉터리를 지원합니다. hooks.d 디렉터리에는 후크 구성 파일을 하나 이상 추가로 저장할 수 있습니다. 추가 후크 파일은 hooks.conf 파일과 동일한 레이아웃을 사용해야 합니다.
cfn-hup 데몬은 이 디렉터리의 각 파일을 구문 분석하고 로드합니다. hooks.d 디렉터리에 있는 임의 후크가 hooks.conf의 후크와 이름이 같으면 후크가 병합됩니다(즉, 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" ...
추가 예
샘플 템플릿은 Amazon EC2에 애플리케이션 배포 단원을 참조하십시오.