gpt4 book ai didi

amazon-web-services - 封隔器 EC2_HOME : Neither of EC2_AMITOOL_HOME or EC2_HOME environment variables are set

转载 作者:行者123 更新时间:2023-12-04 08:08:40 26 4
gpt4 key购买 nike

我使用加壳器来构建 Amazon AMI,我遇到了以下问题:

  1. 基本 AMI (ami-a4bdd194) 没有安装 ec2-ami-tools,所以我编写了一个小脚本来使用 provisions 属性安装它。
  2. 它已成功安装到 /usr/local/bin 但在构建 AMI 时我仍然遇到以下错误。

任何帮助将不胜感激!谢谢!

//控制台错误日志

    amazon-instance: /usr/local/bin/ec2-bundle-vol: line 3: EC2_HOME: Neither of EC2_AMITOOL_HOME or EC2_HOME environment variables are set
amazon-instance:
amazon-instance:
amazon-instance:
amazon-instance:
amazon-instance:
==> amazon-instance: Volume bundling failed. Please see the output above for more
==> amazon-instance: details on what went wrong.

//packer.json

{
"variables": {
"access_key": "",
"secret_key": "",
"x509_cert_path": "",
"x509_key_path": ""
},
"builders": [
{
"access_key": "{{user `access_key`}}",
"secret_key": "{{user `secret_key`}}",
"x509_cert_path": "{{user `x509_cert_path`}}",
"x509_key_path": "{{user `x509_key_path`}}",
"account_id": "123456789012",
"ami_name": "my-packer-example {{timestamp}}",
"instance_type": "i2.xlarge",
"region": "us-west-2",
"s3_bucket": "my_bucket/my_folder",
"source_ami": "ami-a4bdd194",
"ssh_username": "ubuntu",
"type": "amazon-instance"
}
],
"provisioners": [
{
"type": "shell",
"scripts": [
"../tools/install-ec2-ami-tools.bash"
]
}
]
}

//安装-ec2-ami-tools.bash

#!/bin/bash

function trimString()
{
echo "${1}" | sed -e 's/^ *//g' -e 's/ *$//g'
}

function isEmptyString()
{
if [[ "$(trimString ${1})" = '' ]]
then
echo 'true'
else
echo 'false'
fi
}

function installEC2AMITools()
{
if [[ "$(isEmptyString ${EC2_HOME})" = 'true' || "$(which 'ec2-bundle-vol')" = '' ]]
then
sleep 10 &&
sudo apt-get update &&
sudo apt-get install -y 'unzip' 'wget' &&
rm -rf 'ec2-ami-tools' &&
rm -f 'ec2-ami-tools.zip' &&
wget -q 'http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip' &&
unzip -q 'ec2-ami-tools.zip' &&
mv ec2-ami-tools-* 'ec2-ami-tools' &&
sudo rsync -a --no-o --no-g 'ec2-ami-tools/' '/usr/local' &&
rm -rf 'ec2-ami-tools' &&
rm -f 'ec2-ami-tools.zip'
else
echo -e "\033[1;32mec2-ami-tools has already been installed!\033[0m"
fi
}

function main()
{
installEC2AMITools
}

main

最佳答案

这是一个有效的配置文件示例。诀窍是覆盖实际命令以包含所需的路径:

{
"variables": {
"x509_cert_path": "/etc/aws/aws.cert",
"x509_key_path": "/etc/aws/aws.key",
"environment": "staging"
},

"builders": [
{
"type": "amazon-instance",
"name": "chef-server-{{user `environment`}}",
"region": "eu-west-1",
"availability_zone": "eu-west-1a",
"source_ami": "ami-46ba5331",
"instance_type": "m1.medium",
"ssh_username": "ubuntu",
"ami_name": "chef-server-{{user `environment`}} {{isotime | clean_ami_name}}",
"s3_bucket": "provisioning-images",
"ami_description": "Chef Server instance",
"account_id": "xxxx-yyyy-zzzz",
"x509_cert_path": "{{user `x509_cert_path`}}",
"x509_key_path": "{{user `x509_key_path`}}",
"bundle_vol_command": "sudo -n EC2_HOME=/usr/local ec2-bundle-vol --no-filter -k {{.KeyPath}} -u {{.AccountId}} -c {{.CertPath}} -r {{.Architecture}} -e {{.PrivatePath}}/* -d {{.Destination}} -p {{.Prefix}} --batch",
"bundle_upload_command": "sudo -n EC2_HOME=/usr/local ec2-upload-bundle -b {{.BucketName}} -m {{.ManifestPath}} -a {{.AccessKey}} -s {{.SecretKey}} -d {{.BundleDirectory}} --batch --location EU --retry"
}
],

"provisioners": [
{
"type": "shell",
"inline": [
"sleep 3 && sudo apt-get install zip -y > /dev/null",
"wget --quiet http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip",
"unzip -qq ec2-ami-tools.zip",
"sudo -E rsync -a --no-o --no-g ec2-ami-tools-*/ /usr/local/",
"sudo apt-get install ruby -y >/dev/null"
]
},

{
"type": "chef-solo",
"execute_command": "{{if .Sudo}}sudo {{end}}chef-solo -E {{user `environment`}} --no-color -c {{.ConfigPath}} -j {{.JsonPath}}",
"cookbook_paths": ["{{pwd}}/lib/cookbooks"],
"data_bags_path": "{{pwd}}/../../data_bags",
"encrypted_data_bag_secret_path": "/etc/chef/databags.pem",
"environments_path": "{{pwd}}/environments",
"run_list": ["recipe[chef::server]"],
"json": {
"openssh": {
"server": {
"allow_users": "deployer ubuntu",
"use_p_a_m": "yes"
}
},
"chef_client": {
"config": {
"environment": "{{user `environment`}}"
}
}
}
}
]
}

关于amazon-web-services - 封隔器 EC2_HOME : Neither of EC2_AMITOOL_HOME or EC2_HOME environment variables are set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22186390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com