cfn-hup - AWS CloudFormation

Questa è la nuova Guida di riferimento ai modelli CloudFormation . Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida AWS CloudFormation per l'utente.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

cfn-hup

L’helper cfn-hup è un daemon che rileva modifiche nei metadati della risorsa ed esegue azioni specificate dall’utente quando viene rilevata una modifica. Ciò consente di effettuare aggiornamenti di configurazione sulle EC2 istanze Amazon in esecuzione tramite l'azione UpdateStack API.

Per ulteriori informazioni, consulta il tutorial sull'aggiornamento di uno CloudFormation stack nella Guida per l'AWS CloudFormation utente.

Sintassi

cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v

Opzioni

Nome Description Richiesto

--config|-c config.dir

Specifica il percorso in cui lo script cfn-hup cerca le directory cfn-hup.conf e hooks.d. In Windows, il percorso predefinito è system_drive\cfn. In Linux, il percorso predefinito è /etc/cfn.

No

--no-daemon

Specifica questa opzione per eseguire lo script cfn-hup una volta e uscire.

No

-v, --verbose

Specifica questa opzione per utilizzare la modalità dettagliata (verbose).

No

File di configurazione cfn-hup.conf

Il file cfn-hup.conf memorizza il nome dello stack e le credenziali AWS che il daemon cfn-hup usa come destinazione.

Il file cfn-hup.conf utilizza il formato seguente:

[main] stack=<stack-name-or-id>
Nome Description Richiesto

stack

Un nome o ID dello stack.

Tipo: stringa

credential-file

Un file delle credenziali solo del proprietario, nello stesso formato utilizzato per gli strumenti a riga di comando.

Tipo: stringa

Condizione: il parametro role sostituisce questo parametro.

No

role

Il nome di un ruolo IAM associato all’istanza.

Tipo: stringa

No

region

Il nome dello stack Regione AWS che contiene lo stack.

Esempio: us-east-2

No

umask

L’umask usato dal daemon cfn-hup.

Questo valore può essere specificato con o senza 0 iniziale. In entrambi i casi, viene interpretato come un numero ottale (simile al comando umask di Linux). Questo parametro non ha effetto su Windows.

Tipo: intero ottale compreso tra 0 e 0777

Default: 022, versione 1.4–22 e superiore. Il valore predefinito di 022 maschera le autorizzazioni group e world write, perciò i file creati dal daemon cfn-hup non sono scrivibili a livello di gruppo o mondo per impostazione predefinita. Il valore predefinito per le versioni 1.4-21 e precedenti è 0, che non maschera nulla.

No

interval

L’intervallo utilizzato per verificare la presenza di modifiche apportate ai metadati della risorsa in pochi minuti.

Tipo: integer

Default: 15

No

verbose

Specifica l’utilizzo della registrazione verbose.

Tipo: Booleano

Default: false

No

File di configurazione hooks.conf

Le operazioni dell’utente che il daemon cfn-hup chiama periodicamente sono definite nel file di configurazione hooks.conf. Il file hooks.conf utilizza il formato seguente:

[hookname] triggers=post.add or post.update or post.remove path=Resources.<logicalResourceId> (.Metadata or .PhysicalResourceId)(.<optionalMetadatapath>) action=<arbitrary shell command> runas=<runas user>

Al momento dell’esecuzione, l’operazione viene eseguita su una copia dell’ambiente attuale (su cui si trova cfn-hup), con CFN_OLD_METADATA impostato sul valore di metadati precedente specificato dal percorso e CFN_NEW_METADATA impostato sul valore attuale.

Il file di configurazione hook viene caricato solo all’avvio del daemon cfn-hup, perciò un nuovo hook richiede il riavvio del daemon. Una cache dei valori dei metadati precedenti viene memorizzata su /var/lib/cfn-hup/data/metadata_db: puoi eliminarla per forzare cfn-hup a eseguire di nuovo tutte le azioni post.add.

Nome Description Richiesto

hookname

Un nome univoco per questo hook.

Tipo: stringa

triggers

Un elenco di condizioni delimitate da virgola da rilevare.

Valori validi: post.add, post.update o post.remove

Esempio: post.add, post.update

path

Il percorso verso l’oggetto metadati. Supporta un percorso profondo arbitrariamente all’interno del blocco di metadati.

Opzioni del formato del percorso
  • Risorse. <LogicalResourceId>— monitora l'ora dell'ultimo aggiornamento della risorsa, attivando qualsiasi modifica alla risorsa.

  • Risorse. <LogicalResourceId>. PhysicalResourceId— monitora l'ID fisico della risorsa, attivandolo solo quando l'identità della risorsa associata cambia (ad esempio una nuova EC2 istanza).

  • Risorse. <LogicalResourceId>.Metadata (.optional path): monitora i metadati di una risorsa per rilevare eventuali modifiche (un sottopercorso dei metadati può essere specificato a un livello arbitrariamente profondo per monitorare valori specifici).

action

Un comando shell arbitrario che viene eseguito in modo invariato.

runas

Un utente per eseguire il comando come cfn-hup usa il comando su per passare all’utente.

hooks.ddirectory

Per supportare la composizione di diverse applicazioni che distribuiscono hook di notifica della modifica, cfn-hup supporta una directory denominata hooks.d che si trova nella directory di configurazione degli hook. Puoi posizionare uno o più file di configurazione hook nella directory hooks.d. Il file hook aggiuntivi devono utilizzare lo stesso layout del file hooks.conf.

Il daemon cfn-hup analizza e carica ciascun file nella directory. Se qualsiasi hook nella directory hooks.d ha lo stesso nome di un hook in hooks.conf, gli hook verranno uniti (il che significa che hooks.d sovrascriverà hooks.conf per qualsiasi valore che entrambi i file specificano).

Esempi

Negli esempi seguenti, CloudFormation attiva il file cfn-auto-reloader.conf hooks quando si modifica la AWS::CloudFormation::Init risorsa associata alla LaunchConfig risorsa.

JSON

... "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "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: 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" ...

Puoi anche visitare il nostro GitHub repository per scaricare i modelli di esempio che utilizziamocfn-hup, inclusi i seguenti modelli.