Выпечка AMI в Spinnaker Pipeline с использованием Chef-Solo - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь построить тестовый конвейер в 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]"
      ]
    }
}
...