|
packer.io 配置文件api-server.json:
{
"variables": {
"aws_access_key": "",
"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-bf5021d6",
"instance_type": "t1.micro",
"ssh_username": "root",
"ami_name": "api-server-centos-{{timestamp}}"
}],
"provisioners": [
{
"type": "shell",
"inline": [
"sleep 10",
"rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm",
"sudo yum install ansible -y",
"sudo yum update gmp"
]
},
{
"type": "ansible-local",
"playbook_file": "provision/api-server-local.yml",
"role_paths": [
"provision/roles/java"
]
},
{
"type": "shell",
"inline": [
"sudo rm -rf /root/.ssh/authorized_keys"
]
}
]
}
注意这一段:
{
"type": "shell",
"inline": [
"sudo rm -rf /root/.ssh/authorized_keys"
]
}
这是因为Centos的获取aws的public key机制引起的,Centos image会查看 /root/.ssh/authorized_keys 这个文件是否存在,如果不存在,就去取aws的key pair。当你build的时候,也会把这个文件拷进去,就不会再去取,所以,要删去。
https://github.com/mitchellh/packer/issues/788
ansible部分就不写了 |
|
|