|
7 | 7 | "os" |
8 | 8 | "strings" |
9 | 9 | "time" |
| 10 | + ioutil "io/ioutil" |
10 | 11 |
|
11 | 12 | "github.com/docker/machine/libmachine/drivers" |
12 | 13 | "github.com/docker/machine/libmachine/log" |
@@ -39,6 +40,7 @@ type Driver struct { |
39 | 40 | ServerID int |
40 | 41 | cachedServer *hcloud.Server |
41 | 42 | userData string |
| 43 | + userDataFromFile bool |
42 | 44 | Volumes []string |
43 | 45 | Networks []string |
44 | 46 | UsePrivateNetwork bool |
@@ -71,6 +73,7 @@ const ( |
71 | 73 | flagExKeyID = "hetzner-existing-key-id" |
72 | 74 | flagExKeyPath = "hetzner-existing-key-path" |
73 | 75 | flagUserData = "hetzner-user-data" |
| 76 | + flagUserDataFromFile = "hetzner-user-data-from-file" |
74 | 77 | flagVolumes = "hetzner-volumes" |
75 | 78 | flagNetworks = "hetzner-networks" |
76 | 79 | flagUsePrivateNetwork = "hetzner-use-private-network" |
@@ -163,6 +166,11 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag { |
163 | 166 | Usage: "Cloud-init based User data", |
164 | 167 | Value: "", |
165 | 168 | }, |
| 169 | + mcnflag.BoolFlag{ |
| 170 | + EnvVar: "HETZNER_USER_DATA_FROM_FILE", |
| 171 | + Name: flagUserDataFromFile, |
| 172 | + Usage: "Cloud-init based User data is file", |
| 173 | + }, |
166 | 174 | mcnflag.StringSliceFlag{ |
167 | 175 | EnvVar: "HETZNER_VOLUMES", |
168 | 176 | Name: flagVolumes, |
@@ -273,6 +281,7 @@ func (d *Driver) setConfigFromFlagsImpl(opts drivers.DriverOptions) error { |
273 | 281 | d.IsExistingKey = d.KeyID != 0 |
274 | 282 | d.originalKey = opts.String(flagExKeyPath) |
275 | 283 | d.userData = opts.String(flagUserData) |
| 284 | + d.userDataFromFile = opts.Bool(flagUserDataFromFile) |
276 | 285 | d.Volumes = opts.StringSlice(flagVolumes) |
277 | 286 | d.Networks = opts.StringSlice(flagNetworks) |
278 | 287 | disablePublic := opts.Bool(flagDisablePublic) |
@@ -526,9 +535,19 @@ func (d *Driver) makeCreateServerOptions() (*hcloud.ServerCreateOpts, error) { |
526 | 535 | return nil, err |
527 | 536 | } |
528 | 537 |
|
| 538 | + UserData := d.userData |
| 539 | + |
| 540 | + if d.userDataFromFile == true { |
| 541 | + readUserData, err := ioutil.ReadFile(d.userData) |
| 542 | + if err != nil { |
| 543 | + return nil, err |
| 544 | + } |
| 545 | + UserData = string(readUserData) |
| 546 | + } |
| 547 | + |
529 | 548 | srvopts := hcloud.ServerCreateOpts{ |
530 | 549 | Name: d.GetMachineName(), |
531 | | - UserData: d.userData, |
| 550 | + UserData: UserData, |
532 | 551 | Labels: d.ServerLabels, |
533 | 552 | PlacementGroup: pgrp, |
534 | 553 | } |
|
0 commit comments