Я очень плохо знаком с сервисами AWS. Я пытаюсь использовать облачные сервисы AWS и создал шаблон. Шаблон без ошибок, и я могу создавать машины, используя это.
Но я добавил некоторые конфигурации в шаблон, чтобы он устанавливал tomcat, git и другие вещи во время запуска. Но этого не происходит для меня.
Вот часть кода, которую я использовал для установки tomcat:
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"tomcat6": [],
"git": [],
}
}
}
}
},
Но когда я захожу в машину ни то, tomcat
ни другое не git
установлено!
Заранее спасибо.
Ответы:
Я полагаю, что ваша проблема здесь - путаница вокруг того, что cloud-init отличается от cfn-init.
cloud-init - это инструмент, который был запущен как часть AMI Ubuntu AWS, который позволяет интерпретировать компонент пользовательских данных EC2 метаданных экземпляра. Amazon Linux также приняла этот инструмент и встроила его в свой AMI.
cfn-init является частью другого набора инструментов под названием CloudFormation Helper Scripts, созданного AWS для Amazon Linux, который может читать дополнительный раздел, указанный
Metadata
в вашем шаблоне CloudFormation.Итак, в Ubuntu и Amazon Linux AMI предустановлены инструменты cloud-init для доступа к пользовательским данным, но только в Amazon Linux предустановлены вспомогательные сценарии CloudFormation, например cfn-init для доступа к метаданным CloudFormation.
Однако AWS распространяет пакеты , которые можно использовать для чтения метаданных CloudFormation. В частности, посмотрите на этот шаблон, чтобы узнать, как использовать скрипт пользовательских данных cloud-init для установки python-setuptools, загрузить вспомогательные сценарии CloudFormation, установить их с помощью easy_install, а затем вызвать cfn-init.
Примечание. Существуют другие дистрибутивы или AMI, которые могут поддерживать cloud-init или cfn-init, но здесь я просто рассмотрю общие случаи.
источник
Вам нужно вызвать cfn-init ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ) внутри свойства UserData экземпляра:
Свойство UserData имеет кодировку Base64 и позволяет указать сценарий, который должен запускаться при запуске экземпляра. Здесь вы можете вызвать cfn-init, который прочитает метаданные CloudFormation :: Init и настроит все, что там указано.
Также при создании стека CF вам может потребоваться перейти к дополнительным настройкам на второй странице (после задания параметров) и убедиться, что для параметра Откат при ошибке установлено значение «Нет». Таким образом, если сценарий cfn-init завершается неудачей по какой-либо причине, вы можете подключиться к экземпляру ssh и проверить файл /var/log/cfn-init.log для получения дополнительной информации.
источник
Выше ответ правильный. Но вы также должны убедиться, что вы успешно установили вспомогательные сценарии CloudFormation. Пожалуйста, следуйте на http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html для подробностей установки.
источник
источник