最近我一直在使用packer,发现它是一个非常好用的工具。但是我无法在安装脚本中使用已安装的工具。
这里是我最近使用的packer模板示例(我知道有更好的方法可以与脚本和配置管理器一起使用,但为了简单起见,我正在尝试使用这种方式):
{
"variables":{
"aws_access_key": "{{env `AWS_ACCESS_KEY`}}",
"aws_secret_key": "{{env `AWS_SECRET_KEY`}}"
},
"builders":[{
"type": "amazon-ebs",
"access_key":"{{user `aws_access_key`}}",
"secret_key":"{{user `aws_secret_key`}}",
"region": "us-east-1",
"source_ami": "ami-de0d9eb7",
"instance_type": "t1.micro",
"ssh_username": "ubuntu",
"ami_name": "packer-example2 {{timestamp}}"
}],
"provisioners":[{
"type": "shell",
"inline":[
"sleep 30",
"echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list",
"echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list",
"sudo apt-get-repository ppa:chris-lea/node.js",
"wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc",
"sudo apt-key add rabbitmq-signing-key-public.asc",
"sudo apt-get update",
"sudo apt-get install -y build-essential python-dev",
"sudo apt-get build-dep -y python-imaging",
"sudo apt-get install -y redis-server",
"sudo apt-get install -y mongodb-org",
"sudo apt-get install -y nodejs",
"sudo apt-get install -y nginx",
"sudo apt-get install -y rabbitmq-server",
"sudo apt-get install -y git",
"sudo apt-get -y install postgresql libpq-dev postgresql-contrib",
"sudo apt-get -y install htop",
"sudo apt-get -y install sysstat",
"sudo apt-get install -y curl",
"sudo apt-get install -y ntp",
"sudo apt-get install -y wget",
"npm install -g swamp bower grunt"
]
}]
}
我得到了以下错误信息:
amazon-ebs: sudo: npm: 找不到命令
据我所知,npm是与nodejs一起安装的(至少根据我的经验是这样),所以我可能缺少某些东西。我猜当我尝试使用类似的平台安装工具时,如pip、gem等,也会出现这种情况。
/usr/lib/node_modules/npm/bin/npm-cli.js
。 - Salem