我正在尝试使用Packer创建AWS镜像,并通过user_data_file指定一些用户数据。每次启动实例时,都需要运行此文件的内容,因为它将是唯一的。我不能将其烘焙到AMI中。
使用Packer,我有以下内容:
我的user_data shell脚本内容只是一些基本的配置行,用于安装通过provisioners步骤运行的ansible脚本安装的软件包。通过观察Packer的输出,我可以确认所有的ansible脚本都已经运行完毕。
Packer完成并创建了AMI,但user data部分从未被执行。在生成的镜像中没有记录它的存在。没有/userdata.log文件,而/var/lib/cloud/instance/user-data.txt则为空。我感觉我漏掉了一些基本的东西,因为使用Packer应该是一件非常简单的事情。
使用Packer,我有以下内容:
{
"variables": {
"ami_name": ""
},
"builders": [
{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-c8580bdf",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "{{ user `ami_name` }}-{{ isotime | clean_ami_name }}",
"user_data_file": "user_data.sh",
"tags": {
"os_version": "ubuntu",
"built_by": "packer",
"build_on": "{{ isotime | clean_ami_name }}",
"Name": "{{ user `ami_name` }}"
}
}],
"provisioners": [
{
"type": "ansible",
"playbook_file": "playbook.yml",
"user": "ubuntu"
}]
}
我的user_data shell脚本内容只是一些基本的配置行,用于安装通过provisioners步骤运行的ansible脚本安装的软件包。通过观察Packer的输出,我可以确认所有的ansible脚本都已经运行完毕。
Packer完成并创建了AMI,但user data部分从未被执行。在生成的镜像中没有记录它的存在。没有/userdata.log文件,而/var/lib/cloud/instance/user-data.txt则为空。我感觉我漏掉了一些基本的东西,因为使用Packer应该是一件非常简单的事情。
user_data.sh
文件。 - Rickard von Essen/var/log/cloud-init-output.log
和/var/log/cloud-init.log
中。 - Rickard von Essen/var/lib/cloud/scripts/per-instance
,但它没有运行?为了测试,你应该在那里放置一些非常基本的东西,并证明它可以工作。根据我在这个问题上得到的指示,我能够让我的实例启动并执行该目录中的脚本。 - David Ficociello