Я пытаюсь автоматизировать наш процесс 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 для справки