vagrant/website/content/docs/cloud-init/usage.mdx
Chris Roberts e1d357a735
Documentation related updates
Remove the vagrant-go experimental documentation page. Add entry
for none communicator to the experimental flags list. Update the
cloud-init page to remove VirtualBox as only provider to support
cloud-init.
2025-05-21 10:11:29 -07:00

59 lines
1.5 KiB
Text

---
layout: docs
page_title: Vagrant Cloud-Init Usage
description: Various Vagrant Cloud-Init examples
---
# Basic Usage
Below are some very simple examples of how to use Vagrant Cloud-Init with the VirtualBox provider.
For more detailed information about these config values and how to use cloud-init,
please read the [official documentation for cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html).
## Basic Examples
A cloud_init config can be defined as a "hash" of key values, or as a block. Below
are two examples of this for defining a cloud_init config:
```ruby
# Simplified form
config.vm.cloud_init content_type: "text/x-shellscript", path: "./foo/bar.sh"
# Block form
config.vm.cloud_init do |cloud_init|
cloud_init.content_type = "text/cloud-config"
cloud_init.inline = <<-EOF
package_update: true
packages:
- nginx
EOF
end
```
The first part will be read from a local file `./foo/bar`, and the second part
will be attached using the inline content. Both "block" and "hash" forms are supported,
and should work interchangeably.
Individual machines may have their own cloud-init data:
```ruby
config.vm.define "web" do |web|
web.vm.cloud_init content_type: "text/cloud-config",
inline: <<-EOF
package_update: true
packages:
- nginx
EOF
end
end
config.vm.define "db" do |db|
db.vm.cloud_init content_type: "text/cloud-config",
inline: <<-EOF
package_update: true
packages:
- postgresql
EOF
end
```