打包程序将私钥存储在哪里?



从ubuntu shell中,我运行以下命令,与aws平台交谈,自定义Amazon ami(ami-9abea4fb(:

$ packer build -debug template.packer 
Debug mode enabled. Builds will not be parallelized.
amazon-ebs output will be in this color.
==> amazon-ebs: Prevalidating AMI Name...
==> amazon-ebs: Pausing after run of step 'StepPreValidate'. Press enter to continue. 
==> amazon-ebs: Inspecting the source AMI...
==> amazon-ebs: Pausing after run of step 'StepSourceAMIInfo'. Press enter to continue. 
==> amazon-ebs: Creating temporary keypair: packer 5dfe9f3b-9cc2-cbfa-7349-5c8ef50c64d5
amazon-ebs: Saving key for debug purposes: ec2_amazon-ebs.pem
==> amazon-ebs: Pausing after run of step 'StepKeyPair'. Press enter to continue. 

其中template.packer是:

{
"builders": [
{
"type": "amazon-ebs",
"region": "us-west-2",
"source_ami": "ami-9abea4fb",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "MiddleTier-{{isotime | clean_ami_name}}",
"ami_description": "Amazon AMI customised",
"tags": {
"role": "MiddleTier"
},
"run_tags":{
"role": "buildSystem"
}
}
],
"provisioners": [
],
"post-processors":[
]
}

我的理解是,AWS 为打包程序创建了一个私有密钥(ec2_amazon-ebs.pem(,以无密码的方式与 EC2 实例通信,如上述步骤所述。

但是我没有看到打包程序在我的笔记本电脑中复制私钥(ec2_amazon-ebs.pem((如~/.ssh/ec2_amazon-ebs.pem(

打包程序如何与EC2通信? 无需像笔记本电脑中那样~/.ssh/ec2_amazon-ebs.pem复制

除非Packer被赋予了带有ssh_private_key_file的私有SSH,否则Packer会创建一个仅在Packer运行时保存在内存中的短暂数据。

使用-debug标志运行时,此临时键将保存到当前工作目录中。这是为了使您能够通过手动 SSH 进入实例来排查构建问题。

我认为连接到实例的最佳方法是设置以下 2 个属性。

ssh_keypair_name      # provide the aws keypair name which already exists. 
ssh_private_key_file  # provide the path to private key associated with above keypair. ~ resolves to current user's home directory. 

如果未将公有 IP 分配给实例,则还要设置associate_public_ip_address(否则必须使用堡垒主机通过 SSH 连接到计算机(。

这应该允许您按如下方式进行 ssh:

ssh -i ~/.ssh/private_key.pem ec2-user@<InstancePublicIP>

根据实际私钥路径更改文件名。还要根据操作系统更改用户名(例如,基于 ubuntu 的机器的 ubuntu 而不是 ec2-user(

可以使用断点预配程序暂停打包程序执行,如下所示:

provisioner "breakpoint" {
disable = true
note    = "this is a breakpoint"
}

或者,您可以在出现这样的错误时暂停打包程序执行。

packer build -on-error=ask .

这将允许您在打包程序暂停输入时通过 ssh 进入实例以验证脚本。

调试标志如下

packer build -debug .

还将允许您暂停打包程序构建。

构建暂停后,使用上述 ssh 命令连接到实例。

相关内容

  • 没有找到相关文章

最新更新