2011-05-20 6 views
6

Estoy jugando con Chef para lanzar instancias EC2. Todo funciona bastante bien, pero Chef no parece tener la capacidad de etiquetar las instancias. ¿Me estoy perdiendo de algo?¿Cómo puedo etiquetar una instancia de EC2 usando Ruby en Chef?

De lo contrario, ¿cuál es la biblioteca de Ruby preferida para lograr esto? ¿Puedo hacerlo sin requerir gemas adicionales?

Gracias

Respuesta

4

La versión 0.5.12 de knife-ec2 Gema admite etiquetar instancias EC2 en la creación con la opción --tags.

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

Genial. Me alegro de que esto esté disponible ahora. Gracias por compartir. – Zach

+0

@jtimberman - ¿Así que esta etiqueta el servidor en AWS pero también etiqueta el nodo en el contexto de Chef o tiene que hacer eso en un comando separado? Es decir, como administraría las etiquetas en el nodo aquí: http://wiki.opscode.com/display/chef/Managing+Nodes+With+Knife#ManagingNodesWithKnife-UsingTAGS – runamok

+0

Estoy literalmente mirando el código aquí: https: // github.com/opscode/knife-ec2/blob/master/lib/chef/knife/ec2_server_create.rb que habilita las etiquetas aún cuando ejecuto el – runamok

0

Por lo general, el chef se utiliza para instalar cosas en la instancia. No estoy exactamente seguro de cómo empiezas un nodo con el chef, pero tal vez puedas compartir esto y extenderé mi respuesta.

De lo contrario, fog es una gran biblioteca para hacer estas cosas. Recién revisé la fuente y parece ser compatible con el etiquetado.

Para obtener niebla: gem install fog.

+0

Esta respuesta parece razonable. Sospecho que tener chef auto-tag significa proporcionar código al nodo chef, así como las credenciales de la cuenta AWS para usar la biblioteca de niebla para lograr esto. –

+0

Correcto. Tendrá que distribuir las credenciales al nodo. Sugeriría agregar una cuenta de usuario de AWS de bloqueo (usando IAM) y pasarla a la instancia a través de 'user-script'. – Till

2

Sabe esto es viejo, pero estaba navegando sobre y lo descubrió. Otra alternativa es usar el AWS community cookbook, suponiendo que tenga créditos clave, si desea hacer cosas programáticamente como parte de la receta.

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 
Cuestiones relacionadas