Назад | Перейти на главную страницу

Использование Chef Solo для подготовки экземпляра Windows EC2 и его начальной загрузки

Я пытаюсь автоматизировать наш процесс CI для пары приложений .NET, и в идеальном мире я бы хотел развернуть экземпляр Windows EC2 для каждого, загрузить экземпляр для установки Chef Solo, а затем выполнить рецепт Chef для установить некоторые зависимости и само упакованное программное обеспечение.

Однако - я новичок и понятия не имею, даже если это возможно, не говоря уже о том, с чего начать :)

Я довольно хорошо разбираюсь в инструментах командной строки для AWS, поэтому могу развернуть AMI нормально, но дальше этого я довольно застрял. Я бы хотел избежать создания пользовательского AMI с предустановленным Chef, поскольку это лишает многих преимуществ.

Я думаю, что это, по сути, то, что мне нужно сделать, но (что неудивительно) сосредоточено на Linux:

http://www.opinionatedprogrammer.com/2011/06/chef-solo-tutorial-managing-a-single-server-with-chef/

У кого-нибудь есть ссылка на кого-то, кто делал это или подобное раньше? Или лучший способ добиться того, чем я хотел бы заниматься?

Любая помощь приветствуется.

Большинство ресурсов начальной загрузки Windows сосредоточены на Hosted Chef и использовании knife-windows плагин.

Однако это должно быть возможно с Chef solo.

Если вы не создаете AMI с chef-client тогда ваш первый шаг - получить Установщик Full Chef для Windows там.

К счастью, насколько я помню, winrm по умолчанию включен в AMI Windows Amazon. Взгляните здесь на потенциальное решение для начальной загрузки: https://stackoverflow.com/a/13284313/2205881

Вы можете одновременно загружать и другие вещи; например Ruby Windows Installer и т. д. В том же процессе возьмите свои кулинарные книги, роли и т. д. и запустите подготовку Chef.

ОБНОВИТЬ

Я начал делать это немного по-другому, используя --user-data-file при создании экземпляра. Его можно использовать с API AWS, инструментами командной строки или просто вставить в веб-интерфейс, когда Запуск экземпляра.

я использую Шоколадный, пакетный менеджер, для установки chef-client.

<script>
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
cinst chef-client
</script>

В принципе: <script> сообщает сценариям пользовательских данных AWS, что у нас есть пакетный файл для обработки.
@powershell... (etc) - это команда для установки Chocolatey из это документы.
cinst chef-client устанавливает chef-client пакет.

Все это не требует ввода данных пользователем. Пользовательские данные выполняются от имени локального администратора.

Все AMI Amazon запускают свои пользовательские данные при первой загрузке (по умолчанию), а не при последующих загрузках. Итак, это очень простой способ получить chef-client на месте без необходимости подключаться к RDP или даже получать пароль администратора.

Альтернативой является просто передача «сценария пользовательских данных», написанного на Powershell. Вы просто создаете текстовый файл, подобный следующему (hello.ps1):

<PowerShell>

# Код для загрузки и установки приложений находится здесь

</ powershell>

Затем, когда вы запускаете экземпляр, вы просто передаете файл пользовательских данных:

ec2run --region "us-east-1" "$ ami" `

    --group "$mygroup" `

    --subnet "$mySubnet" --instance-type  "m1.medium" `

    --key "$myKey" `

    --user-data-file "hello.ps1"

Вы можете загрузить свои двоичные файлы с S3 и полностью выполнить установку с помощью одного сценария PowerShell. Вот это некоторая документация от Amazon для справки