summaryrefslogtreecommitdiff
path: root/libvirt/cloudinit_def.go
diff options
context:
space:
mode:
authorAlvaro Saurin <alvaro.saurin@gmail.com>2017-02-23 18:10:38 +0100
committerAlvaro <alvaro.saurin@gmail.com>2017-03-29 18:15:54 +0200
commitba9e83975c4db5af4f5e76e86103f8395d5e1939 (patch)
treea437c1e0524d1634e4986e83039102fc338b0a7e /libvirt/cloudinit_def.go
parenta07e21b74726d9ce443ac9332417c169b2ccd708 (diff)
downloadterraform-provider-libvirt-ba9e83975c4db5af4f5e76e86103f8395d5e1939.tar
terraform-provider-libvirt-ba9e83975c4db5af4f5e76e86103f8395d5e1939.tar.gz
user_data argument for cloud-init
Diffstat (limited to 'libvirt/cloudinit_def.go')
-rw-r--r--libvirt/cloudinit_def.go18
1 files changed, 14 insertions, 4 deletions
diff --git a/libvirt/cloudinit_def.go b/libvirt/cloudinit_def.go
index ea7c0dbe..7ff16288 100644
--- a/libvirt/cloudinit_def.go
+++ b/libvirt/cloudinit_def.go
@@ -29,7 +29,8 @@ type defCloudInit struct {
LocalHostname string `yaml:"local-hostname,omitempty"`
InstanceID string `yaml:"instance-id"`
}
- UserData struct {
+ UserDataRaw string `yaml:"user_data"`
+ UserData struct {
SSHAuthorizedKeys []string `yaml:"ssh_authorized_keys"`
}
}
@@ -182,11 +183,20 @@ func (ci *defCloudInit) createFiles() (string, error) {
}
// Create files required by ISO file
- ud, err := yaml.Marshal(&ci.UserData)
- if err != nil {
+ userdata := ""
+ if len(ci.UserDataRaw) > 0 {
+ userdata = ci.UserDataRaw
+ } else {
+ userdata = "#cloud-config\n"
+ }
+
+ // append the extra user data flags
+ if userdata_extra, err := yaml.Marshal(&ci.UserData); err != nil {
return "", fmt.Errorf("Error dumping cloudinit's user data: %s", err)
+ } else {
+ userdata = fmt.Sprintf("%s\n%s", userdata, string(userdata_extra))
}
- userdata := fmt.Sprintf("#cloud-config\n%s", string(ud))
+
if err = ioutil.WriteFile(
filepath.Join(tmpDir, USERDATA),
[]byte(userdata),