0

J'essaie d'apprendre la Cloudformation avec un serveur où j'ai besoin d'une seconde instance EC2 démarrée après la mise à disposition d'une EC2.AWS WaitCondition Attendre la provision

C'est ce que j'ai dans UserData d'instance un

"#!/bin/bash\n", 
"#############################################################################################\n", 
"sudo add-apt-repository ppa:fkrull/deadsnakes\n", 
"sudo apt-get update\n", 
"curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -\n", 
"sudo apt-get install build-essential libssl-dev python2.7 python-setuptools -y\n", 
"#############################################################################################\n", 
"Install Easy Install", 
"#############################################################################################\n", 
"easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", 
"#############################################################################################\n", 
"#############################################################################################\n", 
"GIT LFS Repo", 
"#############################################################################################\n", 
"curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash\n", 
"#############################################################################################\n", 

"cfn-init", 
"   --stack ", 
{ 
"Ref": "AWS::StackName" 
}, 
"   --resource UI", 
"   --configsets InstallAndRun ", 
"   --region ", 
{ 
"Ref": "AWS::Region" 
}, 
"\n", 

"#############################################################################################\n", 
"# Signal the status from cfn-init\n", 
"cfn-signal -e 0 ", 
"   --stack ", 
{ 
"Ref": "AWS::StackName" 
}, 
"   --resource UI", 
"   --region ", 
{ 
"Ref": "AWS::Region" 
}, 
" ", 
{ 
"Ref": "WaitHandleUIConfig" 
}, 
"\n" 

J'ai un WaitCondition, qui je pense est ce qui est utilisé pour faire

"WaitHandleUIConfig" : { 
     "Type" : "AWS::CloudFormation::WaitConditionHandle", 
     "Properties" : {} 
    }, 

    "WaitConditionUIConfig" : { 
     "Type" : "AWS::CloudFormation::WaitCondition", 
     "DependsOn" : "UI", 
     "Properties" : { 
     "Handle" : { "Ref" : "WaitHandleUIConfig" }, 
     "Timeout" : "500" 
     } 
    } 

Dans le cas j'utilise le DependsOn dans la deuxième instance d'attendre la première instance.

"Service": { 
    "Type": "AWS::EC2::Instance", 
    "Properties": { 
    }, 
    "Metadata": { 
    "AWS::CloudFormation::Designer": { 
     "id": "1ba546d0-2bad-4b68-af47-6e35159290ca" 
    }, 
    }, 
    "DependsOn":"WaitConditionUIConfig" 
} 

cela ne fonctionne pas. Je continue d'obtenir l'erreur

WaitCondition a expiré. Reçu 0 conditions lors de l'attente 1

Toute aide serait appréciée.

Merci

Répondre

0

mettre des guillemets autour de la poignée

Modifier cette

" ", 
{ 
"Ref": "WaitHandleUIConfig" 
}, 
"\n" 

à ce

" \"", 
{ 
"Ref": "WaitHandleUIConfig" 
}, 
"\"\n" 
0

Supprimer --stack, --resource et --region de votre commande cfn-signal. Ceux-ci ne sont utilisés que lorsque la «signalisation de ressource», pas lors de la signalisation à l'aide d'un handle de condition d'attente. (Vous pourriez aussi avoir besoin d'ajouter une option --id, mais la documentation dit ne l'exige pas.)

Pour le débogage plus, examinez le fichier /var/log/cloud-init-output.log sur l'instance EC2 pour voir d'autres erreurs de cloud-init qui pourrait échouer à succès envoyer le signal à votre condition d'attente.

Vous pouvez également commenter les descriptions et newline "Install Easy Install", et "GIT LFS Repo",, par exemple, "# Install Easy Install\n",, ces problèmes de syntaxe ne doivent pas causer votre script à l'échec, mais affichera des erreurs « command not found » apparaître dans votre journal.