2013-08-01 2 views
1

J'essaye d'amorcer un noeud seul et d'exécuter la recette getting-started au premier démarrage. Tout semble bien fonctionner sauf que la recette actuelle n'est jamais exécutée."chef-client -j" ne fonctionne pas comme prévu

Voici mon script qui est déclenché par rc.local:

#!/bin/bash 

wget http://<some_IP_Address>/chef-11.6.0-1.el6.x86_64.rpm -P /var/tmp/ 
rpm -ivh /var/tmp/chef-11.6.0-1.el6.x86_64.rpm 
mkdir -p /etc/chef 
cd /etc/chef 
wget http://<some_IP_Address>/chef-validator.pem 
mv chef-validator.pem validation.pem 

cat > client.rb << EOL 
log_level  :auto 
log_location  STDOUT 
chef_server_url "MY_CHEF_SERVER_FQDN" 
validation_client_name "chef-validator" 
EOL 

cat > /etc/chef/firstboot.json << EOL 
{"run_list": ["recipe[getting-started]"]} 
EOL 

chef-client -j /etc/chef/firstboot.json 

Une fois que le nœud est démarré, je vois que le nœud s'inscrit sur le serveur chef mais la recette getting-started qui a été spécifié dans firstboot.json avec chef-client -j sur la dernière ligne de mon script ne se déclenche pas.

Il agit comme seul chef-client est déclenchée et non chef-client -j /etc/chef/firstboot.json

Si je regarde mon poste de travail, je vois que cette recette est ajoutée aussi bien, juste qu'il est pas encore exécuté le run_list du nœud.

est ici la sortie de commande de mon poste de travail de chef pour le noeud qui a été bootstrapped:

$ knife node show node_name.domain.com --run-list 
node_name.domain.com: 
    run_list: recipe[getting-started] 

QUESTION: Pourriez-vous me dire ce que je pourrais être absent ici? pourquoi chef-client ne peut pas exécuter tout ce qui est mentionné dans firstboot.json.

MISE À JOUR: Si je lance chef-client -j /etc/chef/firstboot.json manuellement, il fait le travail. Il semble donc que quelque chose ne va pas avec l'appel rc.local. Il fonctionne seulement chef-client même si j'ai mentionné chef-client -j /etc/chef/firstboot.json

Merci.

+0

A-t-il les autorisations suffisantes pour effectuer les opérations indiquées dans _getting-started_ recipe? –

+0

Je le pense. Si je cours manuellement le même script, la recette est bien exécutée. Dois-je chercher une autorisation spécifique pour la faire fonctionner via 'rc.local'? En outre, je pense utiliser 'cloudinit' comme alternative. Mais ce problème ne devrait pas être si difficile à casser. Je suppose qu'il me manque quelque chose d'évident. Merci pour votre temps. – slayedbylucifer

Répondre

0

Le "getting-started" recette est censé créer "chef-se-started.txt" dans le répertoire personnel de l'utilisateur . Il était en effet en train de créer ce fichier sous "/".

Mais de toute façon, il valide ma réflexion sur la façon d'amorcer une instance à partir de la perspective de l'autoscallage.

2

Au lieu de

cat > /etc/chef/firstboot.json << EOL 
{"run_list": ["recipe[getting-started]"]} 
EOL 

chef-client -j /etc/chef/firstboot.json 

dans votre script, essayez:

chef-client -o 'getting-started' 
+0

Merci. Mais il ne fonctionne toujours pas la recette. Il s'enregistre avec chef serveur comme si j'avais couru juste 'chef-client'. Mais la recette 'getting-started' ne fonctionne pas. Encore une fois, si je l'exécute manuellement, cela fonctionne bien. Je pense que cela a quelque chose à voir avec le 'rc.local' parce que le mien ainsi que votre approche fonctionne très bien quand j'exécute mon script manuellement. Merci pour votre temps. – slayedbylucifer

Questions connexes