3
설정하고 그 문제에 대해 실행됩니다: 어느 EC2_AMITOOL_HOME 또는 EC2_HOME 환경 변수는 내가 아마존 AMI를 구축하는 포장을 사용
- 기본 AMI (
ami-a4bdd194
가)ec2-ami-tools
그래서 내가 쓴 설치되어 있지 않습니다 provision 속성을 사용하여 설치하는 작은 스크립트. /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
덕분에이 재정의 어떻게 내가 그 권리입니다 :' "bundle_vol_command": "sudo는 -n EC2_HOME =/usr/지방 EC2-번들 비결은 필요한 경로를 포함하는 실제 명령을 무시하는 것입니다 -vol --no-filter -k {{.KeyPath}} -u {{.AccountId}} -c {{.CertPath}} -r {{.Architecture}} -e {{.PrivatePath}}/* - "bundle_upload_command": "sudo -n EC2_HOME =/usr/local ec2-upload-bundle -b {{.BucketName}} -m {{.Destination}} -p {{.Prefix}} --batch", " -batch --location EU --retry " –
예,'bundle_vol_command' 및'bundle_vol_command'는 {{.ManifestPath}} -a {{.AccessKey}} -s {{.SecretKey}} -d {{.BundleDirectory} bundle_upload_command'는 사용자가 덮어 쓸 필요가있는 것들입니다. 또한보십시오 : http://www.packer.io/docs/builders/amazon-instance.html – JeanMertz
빙고, 감사 @ JeanMertz –