Возникли проблемы при создании базового AWS AMI с Packer.io. Тайм-аут SSH
Я пытаюсь следовать этим инструкциям, чтобы создать базовый образ AWS с помощью Packer.io. Но это не работает для меня.
Вот мой файл шаблона:
{
"variables": {
"aws_access_key": "",
"aws_secret_key": ""
},
"builders": [{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "us-east-1",
"source_ami": "ami-146e2a7c",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "packer-example {{timestamp}}",
# The following 2 lines don't appear in the tutorial.
# But I had to add them because it said this source AMI
# must be launched inside a VPC.
"vpc_id": "vpc-98765432",
"subnet_id": "subnet-12345678"
}]
}
Вы заметите, что мне пришлось отступить от инструкций, добавив две строки внизу (для VPC и подсетей). Это потому, что я продолжал получать следующую ошибку:
==> amazon-ebs: Error launching source instance: The specified instance type
can only be used in a VPC. A subnet ID or network interface
ID is required to carry out the request.
(VPCResourceNotSpecified)
Именно VPC и Subnet являются временными, которые я должен был создать вручную. Но зачем мне это делать? Почему упаковщик не создает их, а затем удаляет их, как я вижу, он создает временную группу безопасности и пару ключей?
Более того, даже после того, как я добавлю эти две строки, он не сможет создать AMI, потому что получит тайм-аут SSH. Зачем? У меня нет проблем вручную SSHing с другими экземплярами в этом VPC. Экземпляр временного упаковщика имеет InstanceState=Running
, StatusChecks=2/2
и SecurityGroup, которая позволяет SSH со всего мира.
Посмотрите выходные данные отладки команды упаковщика ниже:
$ packer build -debug -var 'aws_access_key=MY_ACCESS_KEY' -var 'aws_secret_key=MY_SECRET_KEY' packer_config_basic.json
Debug mode enabled. Builds will not be parallelized.
amazon-ebs output will be in this color.
==> amazon-ebs: Inspecting the source AMI...
==> amazon-ebs: Pausing after run of step 'StepSourceAMIInfo'. Press enter to continue.
==> amazon-ebs: Creating temporary keypair: packer 99999999-8888-7777-6666-555555555555
amazon-ebs: Saving key for debug purposes: ec2_amazon-ebs.pem
==> amazon-ebs: Pausing after run of step 'StepKeyPair'. Press enter to continue.
==> amazon-ebs: Creating temporary security group for this instance...
==> amazon-ebs: Authorizing SSH access on the temporary security group...
==> amazon-ebs: Pausing after run of step 'StepSecurityGroup'. Press enter to continue.
==> amazon-ebs: Launching a source AWS instance...
amazon-ebs: Instance ID: i-12345678
==> amazon-ebs: Waiting for instance (i-12345678) to become ready...
amazon-ebs: Private IP: 10.0.2.204
==> amazon-ebs: Pausing after run of step 'StepRunSourceInstance'. Press enter to continue.
==> amazon-ebs: Waiting for SSH to become available...
==> amazon-ebs: Timeout waiting for SSH.
==> amazon-ebs: Pausing before cleanup of step 'StepRunSourceInstance'. Press enter to continue.
==> amazon-ebs: Terminating the source AWS instance...
==> amazon-ebs: Pausing before cleanup of step 'StepSecurityGroup'. Press enter to continue.
==> amazon-ebs: Deleting temporary security group...
==> amazon-ebs: Pausing before cleanup of step 'StepKeyPair'. Press enter to continue.
==> amazon-ebs: Deleting temporary keypair...
==> amazon-ebs: Pausing before cleanup of step 'StepSourceAMIInfo'. Press enter to continue.
Build 'amazon-ebs' errored: Timeout waiting for SSH.
==> Some builds didn't complete successfully and had errors:
--> amazon-ebs: Timeout waiting for SSH.
==> Builds finished but no artifacts were created.
1 ответ
Вы используете
t2.micro
тип экземпляра, который может работать только в среде VPC (см. Экземпляры T2).Поскольку вы находитесь в VPC, по умолчанию все трафик находятся за брандмауэром, поэтому вам нужно настроить группы безопасности, чтобы ваш IP мог получить доступ к порту SSH в этом экземпляре.
Более простой способ - использовать m3.medium
Тип экземпляра, немного дорогой, но он запускает все быстрее, и вам вообще не нужно настраивать VPC/ группы безопасности.
Убедитесь , что 1) интернет-шлюз (активный, а не черный) подключен к vpc по умолчанию, где мы запускаем экземпляр, 2) а также проверьте таблицу маршрутов, присутствует ли маршрут к интернет-шлюзу (текущий, а не старый).