Как я могу пометить экземпляр EC2 с помощью Ruby в Chef?

#ruby #amazon-ec2 #chef-infra

#ruby #amazon-ec2 #шеф-повар-инфра

Вопрос:

Я играю с Chef для запуска экземпляров EC2. Все работает довольно хорошо, но у Chef, похоже, нет возможности пометить экземпляры. Я что-то упускаю?

В противном случае, какая библиотека Ruby предпочтительнее для достижения этого? Могу ли я сделать это, не требуя дополнительных драгоценных камней?

Спасибо

Ответ №1:

Версия 0.5.12 knife-ec2 Gem поддерживает пометку экземпляров EC2 при создании с помощью --tags опции.

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

Комментарии:

1. Прохладный. Рад, что это доступно сейчас. Спасибо, что поделились.

2. @jtimberman — Итак, это помечает сервер в AWS, но помечает ли он также узел в контексте Chef или вам нужно сделать это отдельной командой? Т.Е. как вы бы управляли тегами на узле здесь: wiki.opscode.com/display/chef /…

3. Я буквально смотрю на приведенный здесь код: github.com/opscode/knife-ec2/blob/master/lib/chef/knife / … который все еще включает теги, когда я запускаю

4. Я добился этого, выполнив следующее: обновление пакета sudo; установка пакета sudo; удаление sudo gem knife-ec2 -v 0.5.4; Наконец-то теги заработали… Также было обнаружено, что он помечает только в ec2, а не в chef. Наконец, как упоминал jtimberman, синтаксис -теги attribute1=value1, attribute2=value2 .

5. Ну, я хочу, чтобы тег отображался в моем chef, это помечает только экземпляр EC2. 🙁

Ответ №2:

Знаю, что это устарело, но просматривал и заметил это. Другой альтернативой является использование поваренной книги сообщества AWS — при условии, что у вас есть ключевые сертификаты — если вы хотите выполнять что-то программно как часть рецепта.

 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
  

Ответ №3:

Обычно chef используется для установки чего-либо в экземпляре. Я не совсем уверен, как вы запускаете узел с помощью chef, но, может быть, вы можете поделиться этим, и я расширю свой ответ?

В противном случае, fog — отличная библиотека для выполнения этих задач. Я только что просмотрел исходный код, и, похоже, он также поддерживает пометки.

Чтобы получить fog: gem install fog .

Комментарии:

1. Этот ответ кажется разумным. Я подозреваю, что наличие автоматической пометки chef означает предоставление кода узлу chef, а также учетных данных учетной записи AWS для использования библиотеки fog для достижения этой цели.

2. Правильно. Вам нужно будет распространить учетные данные на узел. Я бы предложил добавить учетную запись пользователя AWS с блокировкой (используя IAM) и передать ее экземпляру через user-script .