alibaba / packer-provider

Apache License 2.0
92 stars 26 forks source link

Alicloud (Alibaba Cloud) packer provider

This is the official repository for the Alicloud packer provider.
Currently it supports packer version ≥ v0.12.1.

If you are not planning to contribute to this repo, you can download the compiled binaries according to you platform, unzip and move them into the folder under the packer PATH such as /usr/local/packer.

Install

### Create a simple image for windows
```aidl
{
  "variables": {
    "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}",
    "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}"
  },
  "builders": [{
    "type":"alicloud-ecs",
    "access_key":"{{user `access_key`}}",
    "secret_key":"{{user `secret_key`}}",
    "region":"cn-beijing",
    "image_name":"packer_test",
    "source_image":"win2008r2_64_ent_sp1_zh-cn_40G_alibase_20170915.vhd",
    "instance_type":"ecs.n1.tiny",
    "internet_charge_type":"PayByTraffic",
    "io_optimized":"true",
    "image_force_delete":"true",
    "communicator": "winrm",
    "winrm_port": 5985,
    "winrm_username": "Administrator",
    "winrm_password": "Test1234",
    "user_data_file": "examples/alicloud/basic/winrm_enable_userdata.ps1"
  }],
  "provisioners": [{
      "type": "powershell",
      "inline": ["dir c:\\"]
  }]
}

Note: Since WinRM is closed by default in the system image. You need enable it by userdata in order to connect to the instance, check winrm_enable_userdata.ps1 for details.

Create a simple image with redis installed and mounted disk

{
  "variables": {
    "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}",
    "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}"
  },
  "builders": [{
    "type":"alicloud-ecs",
    "access_key":"{{user `access_key`}}",
    "secret_key":"{{user `secret_key`}}",
    "region":"cn-beijing",
    "image_name":"packer_with_data_disk",
    "source_image":"centos_7_03_64_20G_alibase_20170818.vhd",
    "ssh_username":"root",
    "instance_type":"ecs.n1.tiny",
    "internet_charge_type":"PayByTraffic",
    "io_optimized":"true",
    "image_disk_mappings":[{"disk_name":"data1","disk_size":20},{"disk_name":"data1","disk_size":20,"disk_device":"/dev/xvdz"}]
  }],
  "provisioners": [{
    "type": "shell",
    "inline": [
      "sleep 30",
      "yum install redis.x86_64 -y"
    ]
  }]
}

Note: Images can become deprecated after a while; run aliyun ecs DescribeImages to find one that exists.

Here are more examples include chef, jenkins image template etc.

How to contribute code

Contributors

License

Refrence