diff options
author | Alvaro Saurin <alvaro.saurin@gmail.com> | 2017-02-23 18:10:38 +0100 |
---|---|---|
committer | Alvaro <alvaro.saurin@gmail.com> | 2017-03-29 18:15:54 +0200 |
commit | ba9e83975c4db5af4f5e76e86103f8395d5e1939 (patch) | |
tree | a437c1e0524d1634e4986e83039102fc338b0a7e /libvirt/cloudinit_def.go | |
parent | a07e21b74726d9ce443ac9332417c169b2ccd708 (diff) | |
download | terraform-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.go | 18 |
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), |