In some cases you may need to customize an instance at creation, before the agent is installed and started.
Overriding the default cloud-init file is an advanced feature and should be avoided unless absolutely necessary.
You can customize your instance configuration by providing a custom cloud-init file. Below is sample cloud-init file that you can use as a baseline and customize.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#cloud-config
apt_reboot_if_required: false
package_update: false
package_upgrade: false
apt:
sources:
docker.list:
source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
keyid: 0EBFCD88
packages:
- docker-ce
write_files:
- path: /etc/systemd/system/docker.service.d/override.conf
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
- path: /etc/default/docker
content: |
DOCKER_OPTS=""
- path: /etc/docker/daemon.json
content: |
{
"hosts": [ "0.0.0.0:2376", "unix:///var/run/docker.sock" ],
"tls": true,
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server-cert.pem",
"tlskey": "/etc/docker/server-key.pem"
}
- path: /etc/docker/ca.pem
encoding: b64
content: {{ .CACert | base64 }}
- path: /etc/docker/server-cert.pem
encoding: b64
content: {{ .TLSCert | base64 }}
- path: /etc/docker/server-key.pem
encoding: b64
content: {{ .TLSKey | base64 }}
runcmd:
- [ systemctl, daemon-reload ]
- [ systemctl, restart, docker ]
|
You will need to provide your custom cloud-init file to the autoscale server. You can mount the file as a volume:
--volume=/path/on/host/init.yml:/path/in/container/init.yml
You will also need to tell the autoscale server where to find the file inside the container. Please adjust the configuration based on your provider.
DRONE_AMAZON_USERDATA_FILE=/path/inside/container/init.yml