User data
User data — user configuration parameters of the server operating system. Described as scripts in cloud-config format (text files with YAML syntax) or as a bash script. The scripts are automatically Base64 encoded, transferred to the server, and executed using the cloud-init agent when the operating system is first started. The use of user data helps automate the configuration of servers.
Specify user data can be specified during the installation phase of the operating system.
For more information about cloud-config and bash script formats, see the User data formats instructions in the cloud-init documentation.
In scripts, you can pass both individual operating system configuration parameters and entire sequences of parameters. For example:
- set time zone;
- create a directory and upload files to it;
- update repositories and install packages;
- place SSH key on server;
- configure domain name resolv.conf domain name resolver configuration file.
See other examples in the Cloud config examples cloud-init documentation.
Specify user data
You can only specify user data when installing Linux by autoinstall. The script text is added to the User data field.
Once the automatic installation is complete, the text in the User data field cannot be changed.
The maximum size of a script with data that is not Base64 encoded is 16 KB.
Examples of user data
Set time zone
- Cloud-config
- Bash script
An example script for setting the Europe/Moscow time zone:
#cloud-config
timezone: Europe/Moscow
An example script for setting the Europe/Moscow time zone:
#!/bin/bash
timedatectl set-timezone Europe/Moscow
Create a directory and upload the files to it
- Cloud-config
- Bash script
An example script to create a directory and upload a file to it over the network:
#cloud-config
runcmd:
- mkdir /run/newdir
- [ wget, "http://example.com", -O, /run/newdir/index.html ]
An example script to create a directory and upload a file to it over the network:
#!/bin/bash
mkdir /run/newdir
wget http://example.com -O /run/newdir/index.html
Update repositories and install packages
- Cloud-config
- Bash script
Sample script to install pwgen and pastebinit:
#cloud-config
package_update: true
packages:
- pwgen
- pastebinit
Sample script to install pwgen and pastebinit:
#!/bin/bash
apt update
apt install pwgen pastebinit
Place the SSH key on the server
- Cloud-config
- Bash script
Sample script:
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3N…V7NZ user1@host
- ssh-rsa AAAAB3N…NtHw== user2@server
Sample script:
#!/bin/bash
echo "ssh-rsa AAAAB3N…V7NZ user1@host" >> /root/.ssh/authorized_keys
echo "sssh-rsa AAAAB3N…NtHw== user2@server" >> /root/.ssh/authorized_keys
Customize the configuration file
- Cloud-config
- Bash script
Sample script for the resolv.conf domain name resolver:
#cloud-config
manage_resolv_conf: true
resolv_conf:
nameservers: ['4.4.4.4.4', '8.8.8.8.8']
searchdomains:
- foo.example.com
- bar.example.com
domain: example.com
options:
rotate: true
timeout: 1
Sample script for the resolv.conf domain name resolver:
#!/bin/bash
cat <<EOF > /etc/resolv.conf
domain example.com
nameserver 4.4.4.4.4
nameserver 8.8.8.8.8
search foo.example.com bar.example.com
options rotate
options timeout:1
EOF