63 lines
1.6 KiB
Plaintext
63 lines
1.6 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: Vagrant Cloud-Init Usage
|
|
description: Various Vagrant Cloud-Init examples
|
|
---
|
|
|
|
# Basic Usage
|
|
|
|
Also note that the examples below use the VirtualBox provider, which is the current
|
|
supported provider for this feature.
|
|
|
|
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
|
|
```
|