问题描述
==> amazon-ebs: Provisioning with Puppet...
amazon-ebs: Creating Puppet staging directory...
amazon-ebs: Creating directory: /tmp/packer-puppet-masterless
amazon-ebs: Uploading manifests...
amazon-ebs: Creating directory: /tmp/packer-puppet-masterless/manifests
amazon-ebs: Uploading manifest file from: file.pp
amazon-ebs: Running Puppet: cd /tmp/packer-puppet-masterless && FACTER_packer_build_name='amazon-ebs' FACTER_packer_builder_type='amazon-ebs' sudo -E puppet apply --detailed-exitcodes /tmp/packer-puppet-masterless/manifests/file.pp
==> amazon-ebs: sudo: puppet: command not found
==> amazon-ebs: Prvisioning step had errors: Running the cleanup provisioner,if present...
我的环境是:$ packer -version 1.7.2
Packer Template :
{
"builders": [
{
"ami_name": "packer-linux-aws-demo-{{timestamp}}","instance_type": "t3.micro","region": "us-west-2","source_ami_filter": {
"filters": {
"virtualization-type": "hvm","name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*","root-device-type": "ebs"
},"most_recent": true
},"ssh_username": "ubuntu","type": "amazon-ebs"
}
],"provisioners": [
{
"type": "puppet-masterless","manifest_file": "file.pp"
}
]
}
=========
file.pp
$ cat file.pp
file { "/var/tmp/testfile":
ensure => "present",owner => "root",group => "root",mode => "664",content => "This is a test file created using puppet.
Puppet is really cool",}
解决方法
就像 Matt 的评论所说,Puppet 不会为您安装在图像上,您需要自己安装。如果您使用的是 Ubuntu,则可以使用 inline-shell 配置程序来执行类似的操作
"provisioners": [
{
"type": "shell","inline": [
"apt-get update","apt-get install puppet -y",},{
在我的情况下,Puppet 二进制文件不在我的路径上(因为我的构建器类型是 docker),但是您可以使用 pupet-masterless 配置器的 puppet_bin_dir 属性来指定它的位置>
},{
"type": "puppet-masterless","manifest_file": "site.pp","puppet_bin_dir": "/opt/puppetlabs/bin"
}
]