Одной из приятных особенностей 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 (или другими облачными провайдерами)? Дайте нам знать об этом в комментариях…