Статьи

Инстансы Amazon EC2 с шеф-поваром Opscode, использующим нож

Одной из приятных особенностей opscode chef является его интеграция с облачными провайдерами, такими как amazon EC2. Нож, инструмент клиента командной строки opscode chef, позволяет создавать и загружать виртуальную машину в одну строку — если вы выполните несколько шагов настройки. В этой статье я хочу показать вам, как настроить установку chef и конфигурацию AWS, чтобы вы могли легко загружать новые виртуальные машины с помощью chef.

Подготовьте SSH-доступ к своим инстансам Amazon EC2

Настройте свою группу безопасности Amazon.
По умолчанию Amazon блокирует весь входящий трафик на экземпляры EC2. вам нужно открыть порт SSH для ножа, чтобы получить доступ к вновь созданному экземпляру. Это довольно легко. Просто войдите в консоль AWS и перейдите на вкладку EC2. Перейдите в группы безопасности и добавьте правило для SSH с источником 0.0.0.0/0. Это позволяет SSH-соединениям из любой точки мира. Если вы хотите ограничить доступ только вашей домашней или рабочей сетью, введите соответствующий IP-адрес вместо 0.0.0.0/0.

Создание пары ключей в консоли AWS
Чтобы включить доступ API к вашей учетной записи AWS, необходимо создать пару ключей. Нож будет использовать его для создания, перечисления и уничтожения виртуальных машин.

Просто выберите « Пары ключей» на вкладке EC2 консоли AWS и нажмите « Создать пару ключей» . Дайте ему имя (например, нож, чтобы вы знали, что эта пара ключей будет использоваться ножом) и сохраните загруженный закрытый ключ knife.pem в ~ / .ssh / knife.pem

Подготовьте ~ / .ssh / config, чтобы избежать ошибок несоответствия ключей хоста.
Откройте ~ / .ssh / config и добавьте:

Host ec2*compute-1.amazonaws.com
  StrictHostKeyChecking no
  User ubuntu
  IdentityFile  /Users/mm/.ssh/knife.pem

 

(убедитесь, что вы исправили путь к вашему домашнему каталогу)

Теперь SSH будет работать. Время перейти к следующему шагу.

Настройка ножа Включение управления экземплярами EC2

Сообщите ножу о своих учетных данных AWS.
Поместите учетные данные AWS (ключ доступа и секретный ключ, найденные в вашем профиле AWS) в файл ~ / .chef / knife.rb следующим образом.

knife[:aws_access_key_id] = "..."
knife[:aws_secret_access_key] = "........."

 

Выберите AMI для своих экземпляров EC2.
Если вы запускаете небольшие экземпляры, вы привязаны только к 32-разрядному, поэтому убедитесь, что вы также выбрали 32-разрядный AMI.

Примечание: шаблон начальной загрузки chef ‘ubuntu10.04-dpkg-ree’ НЕ будет работать с небольшими 32-битными экземплярами, поскольку он 64-битный.

Ищите здесь Ubuntu 10.04 LTS AMI ID

Создание экземпляра EC2 с помощью Opscode шеф — нож
Теперь пришло время использования ножа , чтобы запустить и настроить новый экземпляр EC2.

$ knife ec2 server create "role[ubuntu]" -i ami-399ca94d -f m1.small -S knife -I ~/.ssh/knife.pem --ssh-user ubuntu --region eu-west-1 -Z eu-west-1a

 

  • «role [ubuntu]» — это run_list, который я хочу связать с вновь созданным узлом. Здесь вы можете поставить любые роли и рецепты, которые вам нравятся
  • -i это AMI ID, который вы выбрали ранее
  • -f — тип экземпляра Amazon EC2 (см. имя API )
  • -S — это имя, которое вы дали паре ключей EC2, сгенерированной в консоли AWS
  • -Я указываю на файл закрытого ключа этой пары ключей EC2, который был загружен при создании пары ключей в консоли AWS
  • —ssh-user официальные AMI Ubuntu EC2 используют Ubuntu в качестве пользователя по умолчанию
  • —region eu-west-1 Если вы хотите, чтобы ваши экземпляры были развернуты в каком-либо конкретном регионе Amazon AWS, добавьте этот параметр и нужный регион
  • -Z eu-west-1a — зона доступности в вашем регионе (т. Е. У вас есть существующий том диска, который необходимо сделать доступным для этого экземпляра)

ВНИМАНИЕ : обязательно убейте экземпляр еще раз, если он больше не нужен

Управление инстансами EC2 с помощью ножа

Как только вы запустили хотя бы один экземпляр с ножом, вы можете использовать его, чтобы найти запущенные экземпляры EC2, например:

$ knife ec2 server list --region eu-west-1

 

(убедитесь, что вы используете правильный параметр —region)

И, если вы хотите избавиться от экземпляра (завершить экземпляр и удалить узел chef), это так просто, как:

$ knife ec2 server delete i-XXXXXXXX --region eu-west-1
$ knife node delete i-XXXXXXXX

(i-XXXXXXXX — это идентификатор экземпляра, найденный в консоли AWS или при вызове списка серверов ec2).

После того, как вы правильно настроили начальную настройку, можно легко начать, перечислить и остановить экземпляры Amaon EC2 с помощью ножа шеф-повара opscode. С помощью одной команды вы можете создать новый сервер, загрузить его как chef-клиент и запустить все рецепты chef, определенные в run_list. Довольно мило. Какой у вас опыт работы с ножом и EC2 (или другими облачными провайдерами)? Дайте нам знать об этом в комментариях…