Я пытаюсь построить тестовый конвейер в Spinnaker, чтобы испечь AMI, а затем обновить шаблон CloudFormation для развертывания AMI в экземплярах EC2 в группе автоматического масштабирования.
У меня есть небольшая тестовая поваренная книга шеф-повара, которая отлично работает при локальном запуске упаковщика. Я использую Berks локально на своем ноутбуке, чтобы продать свои кулинарные книги и вытащить их из нашего внутреннего супермаркета Chef. Упаковщик настраивается с помощью поставщика chef-solo, как показано в приведенном ниже примере шаблона упаковщика, и передает поваренные книги в экземпляр EC2 сборщика упаковщиков и запускает Chef. Сейчас мы проводим тестирование с Linux, но хотим поддерживать как Linux, так и Windows AMI.
Возможно ли использовать chef-solo с пользовательским шаблоном упаковщика со Spinnaker? Если да, то когда и где должны работать берки, чтобы продавать поваренные книги до того, как упаковщик выполнит свою работу?
{
"variables": {
"aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
"aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}",
"aws_region": "{{env `AWS_REGION`}}",
"ssh_private_key_file": "{{env `SSH_PRIVATE_KEY_FILE`}}",
"subnet_id": "{{env `AWS_SUBNET_ID`}}",
"vpc_id": "{{env `AWS_DEFAULT_VPC_ID`}}"
},
"builders": [
{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "{{user `aws_region`}}",
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "amzn2-ami-hvm-*-x86_64-gp2",
"root-device-type": "ebs"
},
"most_recent": true,
"owners": [
"amazon"
]
},
"ami_name": "test-ami-{{timestamp}}",
"ami_description": "Test Linux AMI",
"communicator": "ssh",
"instance_type": "m4.large",
"subnet_id": "{{user `subnet_id`}}",
"tags": {
"Name": "Test Linux AMI"
},
"ssh_username": "ec2-user",
"ssh_keypair_name": "TestKeypair",
"ssh_private_key_file": "{{user `ssh_private_key_file`}}",
"vpc_id": "{{user `vpc_id`}}"
}
],
"provisioners": [
{
"type": "shell-local",
"command": "berks vendor --delete -b ./Berksfile ./cookbooks"
},
{
"type": "chef-solo",
"cookbook_paths": [
"./cookbooks"
],
"run_list": [
"recipe[test_cookbook]"
]
}
}