Packer:在packer脚本中使用npm install - 失败,找不到命令错误

时间:2014-08-09 10:29:48

标签: 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:command not found

我知道npm安装了nodejs(至少根据我的经验)所以我可能会遗漏一些东西。我想当我尝试使用类似的平台安装工具时也会发生这种情况:pip,gem等...

1 个答案:

答案 0 :(得分:1)

自从我提出这个问题以来已经有一段时间了,我重新访问了,现在我能够回答这个问题(现在我使用打包器来构建我们的生产机器,仍然很棒)并提供了一些指向工作包解决方案的指示< / p>

  1. 阅读实际安装日志,它指出了问题!它可能与不同的组件(如此处的情况),但问题(未添加apt-repo)可能会在错误发生之前出现。
  2. 实际问题是sudo apt-add-repository对于node.js repo,从未工作过,所以我真的没有安装npm,并且得到了一个与ubuntu存储库捆绑的旧node.js版本(没有chris- lea repository)并且没有npm。
  3. 为了使apt-add-repository正常工作,必须先在脚本中安装一些预先要求:
  4. sudo apt-get install -y software-properties-common sudo apt-get install -y python-software-properties

    1. 在尝试安装npm模块之前,还有一个好主意是安装git,curl,wget,unzip等。因为某些节点模块/工具实际上依赖于它们。

    2. 根本不要使用ubuntu node / npm bundle .. install nvm并随之安装所需的node.js和IO.js版本。在尝试使用新的npm之前,不要忘记source nvm.sh ..

    3. 希望这有助于遇到此问题的任何人。