繁体   English   中英

使用packer将文件从主机复制到生成的映像,无需密码

[英]Using packer to copy file from host to generated image without password

我目前正在使用packer从给定配置生成自定义图像。 packer .json文件包含本包装程序教程中描述的条款。

我没有在那里输入命令,而是使用shell选项,我可以在其中编写一堆sudo apt-get install命令来自定义图像。

问题是我需要将文件从我拥有的计算机复制到图像中。 要清楚,我拥有的计算机也是我正在运行命令packer build example.json

在shell脚本中,如何进行安全复制,以便从新创建的图像的角度来看 ,图像可以安全地将文件从我的计算机复制到自身, 无需输入密码? 这是一个shell脚本,所以如果我愿意,我就无法输入。

我知道为了避免输入密码,我需要公钥/私钥验证。 在shell脚本中,我有:

sudo ssh-keygen -t rsa -b 2048
sudo scp ~/.ssh/id_rsa.pub user@example.com:/home/user/.ssh/uploaded_key.pub
sudo ssh user@example.com "echo `cat ~/.ssh/uploaded_key.pub` >> ~/.ssh/authorized_keys"

(摘自此处和其他地方的示例 。我对此的理解是生成的图像正在运行这些命令。)

我在StackOverflow上看到的这个和许多方法的问题,例如与这个相关的问题 ,是两件事之一。

  • 这种公共/私有身份验证一次发生时,似乎需要密码。 但是,这完全是在shell脚本中完成的,所以我不知道如何避免它。
  • packer会动态生成这些图像,因此需要我为sshscp键入显式AMI ID的其他方法似乎不起作用。

一个密切相关的问题使用“文件”提供类型,但我想用“shell”类型执行此操作,我不知道如何使用文件和shell选项。

我怎么解决这个问题?

您应该使用file配置器,例如:

"provisioners": [
  {
    "type": "file",
    "source": "source_file",
    "destination": "dest"
  },
  {
    "type": "script",
    "inline": [ "echo do something here" ]
  }
]

请参阅文档:供应商

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM