shilang 发表于 2015-11-25 15:28:40

用packer + ansible定制Centos AMI

  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部分就不写了
页: [1]
查看完整版本: 用packer + ansible定制Centos AMI