2011-05-20 7 views
6

Je joue avec Chef pour lancer des instances EC2. Tout fonctionne plutôt bien, mais Chef ne semble pas avoir la capacité d'étiqueter les instances. Est-ce que je manque quelque chose?Comment marquer une instance EC2 en utilisant Ruby dans Chef?

Sinon, quelle est la bibliothèque Ruby préférée pour y parvenir? Puis-je le faire sans avoir besoin de gemmes supplémentaires?

Merci

Répondre

4

La version 0.5.12 du knife-ec2 Gem prend en charge le marquage des instances EC2 à la création avec l'option --tags.

knife ec2 server create [... your options...] --tags Tag=Value 
+0

Cool. Content que ce soit disponible maintenant. Merci d'avoir partagé. – Zach

+0

@jtimberman - Donc, cela balise le serveur dans AWS mais est-ce qu'il marque aussi le noeud dans le contexte de Chef ou est-ce que vous devez le faire dans une commande séparée? C'est à dire que vous géreriez les tags sur le nœud ici: http://wiki.opscode.com/display/chef/Managing+Nodes+With+Knife#ManagingNodesWithKnife-UsingTAGS – runamok

+0

Je regarde littéralement le code ici: https: // github.com/opscode/knife-ec2/blob/master/lib/chef/knife/ec2_server_create.rb qui active les balises quand j'exécute le – runamok

0

Habituellement, le chef est utilisé pour installer des choses sur l'instance. Je ne sais pas exactement comment vous démarrez un noeud avec le chef, mais peut-être que vous pouvez partager cela et je vais étendre ma réponse? En revanche, fog est une excellente bibliothèque pour faire ces choses. Je n'ai fait que survoler la source, et il semble aussi soutenir le marquage.

Pour obtenir du brouillard: gem install fog.

+0

Cette réponse semble raisonnable. Je soupçonne que le fait d'avoir une auto-étiquette de chef signifie fournir du code au chef, ainsi que les informations d'identification du compte AWS pour utiliser la bibliothèque de brouillard pour y parvenir. –

+0

Correct. Vous devrez distribuer les informations d'identification au noeud. Je suggère d'ajouter un compte utilisateur verrouillé AWS (en utilisant IAM) et de le transmettre à l'instance via 'user-script'. – Till

2

Sachez que c'est ancien, mais que vous l'avez parcouru et repéré. Une autre alternative est d'utiliser le AWS community cookbook - en supposant que vous ayez des crans clés - si vous voulez faire des choses par programme dans le cadre de la recette.

aws = data_bag_item('mydatabag', 'creds') 
aws_resource_tag node['ec2']['instance_id'] do 
    aws_access_key aws['access_key'] 
    aws_secret_access_key aws['secret_key'] 
    tags({ 
    "foo" => "bar" 
    }) 
    action :update 
end 
Questions connexes