|
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