Informations sur le cloud avec des erreurs survenant dans Ubuntu

J'ai lu quelque chose et je suis venu comprendre que si vous voulez utiliser launchConfig de Ubuntu, Vous devrez installer le fichier cfn-init Seul, qu'est-ce que j'ai fait:

  "Properties" : {
"KeyName" : { "Ref" : "KeyName" },
"SpotPrice" : "0.05",
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" },
"Arch" ] } ] },
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
"InstanceType" : { "Ref" : "InstanceType" },
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash\n",
"apt-get -y install python-setuptools\n",
"easy_install [url=https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-1.0-6.tar.gz]https://s3.amazonaws.com/cloud ... ar.gz[/url]\n",
"cfn-init ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configset ALL",
" --access-key ", { "Ref" : "WorkerKeys" },
" --secret-key ", {"Fn::GetAtt": ["WorkerKeys", "SecretAccessKey"]},
" --region ", { "Ref" : "AWS::Region" }, " || error_exit 'Failed to run cfn-init'\n"
]]}}

Mais j'ai un problème avec ce paramètre que je ne trouve pas de réponse digne. Dans mes journaux, cette erreur apparaît constamment:

Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: config-scripts-per-once already ran once
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: handling scripts-per-boot with freq=None and args=[]
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: handling scripts-per-instance with freq=None and args=[]
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: handling scripts-user with freq=None and args=[]
Jun 15 12:02:34 ip-0 [CLOUDINIT] cc_scripts_user.py[WARNING]: failed to run-parts in /var/lib/cloud/instance/scripts
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[WARNING]: Traceback (most recent call last):#012 File "/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/__init__.py", line 117, in run_cc_modules#012 cc.handle(name, run_args, freq=freq)#012 File "/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/__init__.py", line 78, in handle#012 [name, self.cfg, self.cloud, cloudinit.log, args])#012 File "/usr/lib/python2.7/dist-packages/cloudinit/__init__.py", line 326, in sem_and_run#012 func(*args)#012 File "/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/cc_scripts_user.py", line 31, in handle#012 util.runparts(runparts_path)#012 File "/usr/lib/python2.7/dist-packages/cloudinit/util.py", line 223, in runparts#012 raise RuntimeError('runparts: %i failures' % failed)#012RuntimeError: runparts: 1 failures
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[ERROR]: config handling of scripts-user, None, [] failed
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: handling keys-to-console with freq=None and args=[]
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: handling phone-home with freq=None and args=[]
Jun 15 12:02:34 ip-0 [CLOUDINIT] __init__.py[DEBUG]: handling final-message with freq=None and args=[]
Jun 15 12:02:34 ip-0 [CLOUDINIT] cloud-init-cfg[ERROR]: errors running cloud_config [final]: ['scripts-user']

Je ne comprends absolument pas ce que signifie le script utilisateur, et Google Cela ne vous aide pas particulièrement. Quand je me connecte à ssh au serveur, je vois qu'il commence le script userdata, Depuis que je peux accéder cfn-init En tant qu'équipe, alors que je ne peux pas dans l'original AMI, À partir de laquelle une instance est créée.

Cependant, j'ai launchConfig:

    "Comment" : "Install a simple PHP application",
"AWS::CloudFormation::Init" : {
"configSets" : {
"ALL" : ["WorkerRole"]
},
"WorkerRole" : {
"files" : {
"/etc/cron.d/worker.cron" : {
"content" : "*/1 * * * * ubuntu /home/ubuntu/worker_cron.php &> /home/ubuntu/worker.log\n",
"mode" : "000644",
"owner" : "root",
"group" : "root"
},

"/home/ubuntu/worker_cron.php" : {
"content" : { "Fn::Join" : ["", [
"#!/usr/bin/env php",
"php",
"define('ROOT', dirname(__FILE__));",
"const AWS_KEY = \"", { "Ref" : "WorkerKeys" }, "\";",
"const AWS_SECRET = \"", { "Fn::GetAtt": ["WorkerKeys", "SecretAccessKey"]}, "\";",
"const QUEUE = \"", { "Ref" : "InputQueue" }, "\";",
"exec('git clone x '.ROOT.'/worker');",
"if(!file_exists(ROOT.'/worker/worker_despatcher.php')){",
"echo 'git not downloaded right';",
"exit();",
"}",
"echo 'git downloaded';",
"include_once ROOT.'/worker/worker_despatcher.php';"
]]},
"mode" : "000755",
"owner" : "ubuntu",
"group" : "ubuntu"
}
}
}
}

Qui semble être lancé du tout. J'ai vérifié s'il y a des fichiers dans mon annuaire domestique, mais il n'y a pas de là. J'ai vérifié l'enregistrement cronjob, Mais ce n'est pas non plus. Après avoir lu la documentation, je ne peux pas comprendre que ce n'est pas potentiellement aussi avec mon code.

Il y a des pensées sur la raison pour laquelle cela ne fonctionne pas? J'ai manqué quelque chose de flagrant?
</div
<div class="answer_text">
Bien résolu.

J'ai accidentellement décidé que pour un meilleur débogage, je ferai le nombre minimum de copies d'égale 1. Cela a causé une erreur dans mon launchConfig. Après une traînée, j'ai découvert que j'ai fait une très grosse erreur avec mon modèle. Alors j'ai changé launchConfig sur:

"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"Comment" : "Install a simple PHP application",
"AWS::CloudFormation::Init" : {
"config" : {
"files" : {
"/etc/cron.d/worker" : {
"content" : "*/1 * * * * ubuntu /home/ubuntu/worker_cronjob &amp;&gt; /home/ubuntu/worker.log\n",
"mode" : "000644",
"owner" : "root",
"group" : "root"
},

"/home/ubuntu/worker_cronjob" : {
"content" : { "Fn::Join" : ["", [
"#!/usr/bin/env php\n",
"<?php\n",
"define('ROOT', dirname(__FILE__));",
"const AWS_KEY = \"", { "Ref" : "WorkerKeys" }, "\";",
"const AWS_SECRET = \"", { "Fn::GetAtt": ["WorkerKeys", "SecretAccessKey"]}, "\";",
"const QUEUE = \"", { "Ref" : "InputQueue" }, "\";",
"exec('git clone x '.ROOT.'/worker');",
"if(!file_exists(ROOT.'/worker/worker_despatcher.php')){",
"echo 'git not downloaded right';",
"exit();",
"}",
"echo 'git downloaded';",
"include_once ROOT.'/worker/worker_despatcher.php';"
]]},
"mode" : "000755",
"owner" : "ubuntu",
"group" : "ubuntu"
}
}
}
}
},

Et mes données utilisateur:

    "UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash\n",
"apt-get -y install python-setuptools\n",
"easy_install [url=https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz]https://s3.amazonaws.com/cloud ... ar.gz[/url]\n",
"cfn-init -v ",
" -s ", { "Ref" : "AWS::StackName" },
" -r LaunchConfig ",
" --access-key ", { "Ref" : "WorkerKeys" },
" --secret-key ", {"Fn::GetAtt": ["WorkerKeys", "SecretAccessKey"]},
" --region ", { "Ref" : "AWS::Region" }, "\n"
]]}

Et maintenant tout fonctionne dandy.

Par conséquent, si vous recevez une erreur du script utilisateur, cela signifie que votre configuration est incorrecte et que vous devriez le regarder à nouveau.

Merci pour l'aide :)
</div>
</div>
Invité:

Babette

Confirmation de:

Bien résolu.

J'ai accidentellement décidé que pour un meilleur débogage, je ferai le nombre minimum de copies d'égale 1. Cela a causé une erreur dans mon launchConfig. Après une traînée, j'ai découvert que j'ai fait une très grosse erreur avec mon modèle. Alors j'ai changé launchConfig sur:

"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"Comment" : "Install a simple PHP application",
"AWS::CloudFormation::Init" : {
"config" : {
"files" : {
"/etc/cron.d/worker" : {
"content" : "*/1 * * * * ubuntu /home/ubuntu/worker_cronjob &> /home/ubuntu/worker.log\n",
"mode" : "000644",
"owner" : "root",
"group" : "root"
},

"/home/ubuntu/worker_cronjob" : {
"content" : { "Fn::Join" : ["", [
"#!/usr/bin/env php\n",
"php\n",
"define('ROOT', dirname(__FILE__));",
"const AWS_KEY = \"", { "Ref" : "WorkerKeys" }, "\";",
"const AWS_SECRET = \"", { "Fn::GetAtt": ["WorkerKeys", "SecretAccessKey"]}, "\";",
"const QUEUE = \"", { "Ref" : "InputQueue" }, "\";",
"exec('git clone x '.ROOT.'/worker');",
"if(!file_exists(ROOT.'/worker/worker_despatcher.php')){",
"echo 'git not downloaded right';",
"exit();",
"}",
"echo 'git downloaded';",
"include_once ROOT.'/worker/worker_despatcher.php';"
]]},
"mode" : "000755",
"owner" : "ubuntu",
"group" : "ubuntu"
}
}
}
}
},

Et mes données utilisateur:

    "UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash\n",
"apt-get -y install python-setuptools\n",
"easy_install [url=https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz]https://s3.amazonaws.com/cloud ... ar.gz[/url]\n",
"cfn-init -v ",
" -s ", { "Ref" : "AWS::StackName" },
" -r LaunchConfig ",
" --access-key ", { "Ref" : "WorkerKeys" },
" --secret-key ", {"Fn::GetAtt": ["WorkerKeys", "SecretAccessKey"]},
" --region ", { "Ref" : "AWS::Region" }, "\n"
]]}

Et maintenant tout fonctionne dandy.

Par conséquent, si vous recevez une erreur du script utilisateur, cela signifie que votre configuration est incorrecte et que vous devriez le regarder à nouveau.

Merci pour l'aide :)
</div

Pour répondre aux questions, connectez-vous ou registre