Cloud-init can perform several tasks independent of user data and provider data. These tasks are primarily based on the cloud-init configuration you provide. Some of the common tasks include:
Set hostname: You can configure the instance's hostname according to your preferences.
Set timezone: You can configure the instance's timezone to match your requirements.
Update packages: Cloud-init can update the package cache and upgrade packages on the system.
Install packages: You can provide a list of packages to be installed during the instance initialization.
Configure users and groups: You can create and manage users and groups, including setting up passwords, SSH keys, and user permissions.
Configure networking: Cloud-init can set up and configure the networking interfaces for your instance.
Run custom scripts: You can include shell scripts or cloud-config scripts to perform custom tasks during the instance initialization.
Mount filesystems and storage: Cloud-init can automatically mount filesystems, storage devices, and configure fstab entries.
Configure NTP: You can set up Network Time Protocol (NTP) servers to synchronize the system time.
Write files: Cloud-init can create and write files on the instance with specified contents and permissions.
Disable cloud-init: You can disable specific cloud-init modules or disable cloud-init altogether for subsequent boots.
These tasks can be performed using the appropriate modules and configuration options in the cloud-init YAML file. While some tasks are provider-agnostic, others may require specific configurations depending on the cloud provider or platform you are using.