Merge cleanup, remove `license` parameter in favor of bool `accept_license`, adjust how license acceptance is done, update hab provisioner doc.
This commit is contained in:
parent
e3d1876f44
commit
30895a6cf5
|
@ -25,9 +25,6 @@ Environment="HAB_SUP_GATEWAY_AUTH_TOKEN={{ .GatewayAuthToken }}"
|
|||
{{ if .BuilderAuthToken -}}
|
||||
Environment="HAB_AUTH_TOKEN={{ .BuilderAuthToken }}"
|
||||
{{ end -}}
|
||||
{{ if .License -}}
|
||||
Environment="HAB_LICENSE={{ .License }}"
|
||||
{{ end -}}
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
@ -39,18 +36,33 @@ func (p *provisioner) linuxInstallHabitat(o terraform.UIOutput, comm communicato
|
|||
return err
|
||||
}
|
||||
|
||||
// Run the hab install script
|
||||
// Run the install script
|
||||
var command string
|
||||
if p.Version == "" {
|
||||
command = p.linuxGetCommand(fmt.Sprintf("bash ./install.sh "))
|
||||
command = fmt.Sprintf("bash ./install.sh ")
|
||||
} else {
|
||||
command = p.linuxGetCommand(fmt.Sprintf("bash ./install.sh -v %s", p.Version))
|
||||
command = fmt.Sprintf("bash ./install.sh -v %s", p.Version)
|
||||
}
|
||||
|
||||
if err := p.runCommand(o, comm, command); err != nil {
|
||||
if err := p.runCommand(o, comm, p.linuxGetCommand(command)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Accept the license
|
||||
if p.AcceptLicense {
|
||||
var cmd string
|
||||
|
||||
if p.UseSudo == true {
|
||||
cmd = "env HAB_LICENSE=accept sudo -E /bin/bash -c 'hab -V'"
|
||||
} else {
|
||||
cmd = "env HAB_LICENSE=accept /bin/bash -c 'hab -V'"
|
||||
}
|
||||
|
||||
if err := p.runCommand(o, comm, cmd); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Create the hab user
|
||||
if err := p.createHabUser(o, comm); err != nil {
|
||||
return err
|
||||
|
@ -165,11 +177,10 @@ func (p *provisioner) linuxStartHabitat(o terraform.UIOutput, comm communicator.
|
|||
}
|
||||
}
|
||||
|
||||
// This func is a little different than the others since we need to expose HAB_AUTH_TOKEN and HAB_LICENSE to a shell
|
||||
// This func is a little different than the others since we need to expose HAB_AUTH_TOKEN to a shell
|
||||
// sub-process that's actually running the supervisor.
|
||||
func (p *provisioner) linuxStartHabitatUnmanaged(o terraform.UIOutput, comm communicator.Communicator, options string) error {
|
||||
var token string
|
||||
var license string
|
||||
|
||||
// Create the sup directory for the log file
|
||||
if err := p.runCommand(o, comm, p.linuxGetCommand("mkdir -p /hab/sup/default && chmod o+w /hab/sup/default")); err != nil {
|
||||
|
@ -178,15 +189,10 @@ func (p *provisioner) linuxStartHabitatUnmanaged(o terraform.UIOutput, comm comm
|
|||
|
||||
// Set HAB_AUTH_TOKEN if provided
|
||||
if p.BuilderAuthToken != "" {
|
||||
token = fmt.Sprintf("HAB_AUTH_TOKEN=%s ", p.BuilderAuthToken)
|
||||
token = fmt.Sprintf("env HAB_AUTH_TOKEN=%s ", p.BuilderAuthToken)
|
||||
}
|
||||
|
||||
// Set HAB_LICENSE if provided
|
||||
if p.License != "" {
|
||||
license = fmt.Sprintf("HAB_LICENSE=%s ", p.License)
|
||||
}
|
||||
|
||||
return p.runCommand(o, comm, p.linuxGetCommand(fmt.Sprintf("(env %s%s setsid hab sup run%s > /hab/sup/default/sup.log 2>&1 <&1 &) ; sleep 1", token, license, options)))
|
||||
return p.runCommand(o, comm, p.linuxGetCommand(fmt.Sprintf("(%ssetsid hab sup run%s > /hab/sup/default/sup.log 2>&1 <&1 &) ; sleep 1", token, options)))
|
||||
}
|
||||
|
||||
func (p *provisioner) linuxStartHabitatSystemd(o terraform.UIOutput, comm communicator.Communicator, options string) error {
|
||||
|
@ -355,11 +361,6 @@ func (p *provisioner) linuxGetCommand(command string) string {
|
|||
// Always set HAB_NONINTERACTIVE & HAB_NOCOLORING
|
||||
env := fmt.Sprintf("env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true")
|
||||
|
||||
// Set license acceptance
|
||||
if p.License != "" {
|
||||
env += fmt.Sprintf(" HAB_LICENSE=%s", p.License)
|
||||
}
|
||||
|
||||
// Set builder auth token
|
||||
if p.BuilderAuthToken != "" {
|
||||
env += fmt.Sprintf(" HAB_AUTH_TOKEN=%s", p.BuilderAuthToken)
|
||||
|
|
|
@ -64,18 +64,19 @@ func TestLinuxProvisioner_linuxInstallHabitat(t *testing.T) {
|
|||
},
|
||||
"Installation with Habitat license acceptance": {
|
||||
Config: map[string]interface{}{
|
||||
"version": "0.81.0",
|
||||
"license": "accept-no-persist",
|
||||
"auto_update": true,
|
||||
"use_sudo": true,
|
||||
"version": "0.81.0",
|
||||
"accept_license": true,
|
||||
"auto_update": true,
|
||||
"use_sudo": true,
|
||||
},
|
||||
|
||||
Commands: map[string]bool{
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'curl --silent -L0 https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh > install.sh'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'bash ./install.sh -v 0.81.0'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'hab install core/busybox'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'hab pkg exec core/busybox adduser -D -g \"\" hab'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'rm -f install.sh'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'curl --silent -L0 https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh > install.sh'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'bash ./install.sh -v 0.81.0'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'hab install core/busybox'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'hab pkg exec core/busybox adduser -D -g \"\" hab'": true,
|
||||
"env HAB_LICENSE=accept sudo -E /bin/bash -c 'hab -V'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'rm -f install.sh'": true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -157,9 +158,9 @@ func TestLinuxProvisioner_linuxStartHabitat(t *testing.T) {
|
|||
},
|
||||
|
||||
Commands: map[string]bool{
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'hab install core/hab-sup/0.81.0'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c 'mkdir -p /hab/sup/default && chmod o+w /hab/sup/default'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true HAB_LICENSE=accept-no-persist sudo -E /bin/bash -c '(env HAB_LICENSE=accept-no-persist setsid hab sup run --peer host1 --peer 1.2.3.4 --auto-update > /hab/sup/default/sup.log 2>&1 <&1 &) ; sleep 1'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'hab install core/hab-sup/0.81.0'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c 'mkdir -p /hab/sup/default && chmod o+w /hab/sup/default'": true,
|
||||
"env HAB_NONINTERACTIVE=true HAB_NOCOLORING=true sudo -E /bin/bash -c '(setsid hab sup run --peer host1 --peer 1.2.3.4 --auto-update > /hab/sup/default/sup.log 2>&1 <&1 &) ; sleep 1'": true,
|
||||
},
|
||||
|
||||
Uploads: map[string]string{
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
|
||||
type provisioner struct {
|
||||
Version string
|
||||
License string
|
||||
AutoUpdate bool
|
||||
HttpDisable bool
|
||||
Services []Service
|
||||
|
@ -47,13 +46,13 @@ type provisioner struct {
|
|||
SupOptions string
|
||||
AcceptLicense bool
|
||||
|
||||
installHabitat provisionFn
|
||||
startHabitat provisionFn
|
||||
uploadRingKey provisionFn
|
||||
uploadCtlSecret provisionFn
|
||||
startHabitatService provisionServiceFn
|
||||
installHabitat provisionFn
|
||||
startHabitat provisionFn
|
||||
uploadRingKey provisionFn
|
||||
uploadCtlSecret provisionFn
|
||||
startHabitatService provisionServiceFn
|
||||
|
||||
osType string
|
||||
osType string
|
||||
}
|
||||
|
||||
type provisionFn func(terraform.UIOutput, communicator.Communicator) error
|
||||
|
@ -66,10 +65,6 @@ func Provisioner() terraform.ResourceProvisioner {
|
|||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
},
|
||||
"license": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
},
|
||||
"auto_update": &schema.Schema{
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
|
@ -434,7 +429,6 @@ func (b *Bind) toBindString() string {
|
|||
func decodeConfig(d *schema.ResourceData) (*provisioner, error) {
|
||||
p := &provisioner{
|
||||
Version: d.Get("version").(string),
|
||||
License: d.Get("license").(string),
|
||||
AutoUpdate: d.Get("auto_update").(bool),
|
||||
HttpDisable: d.Get("http_disable").(bool),
|
||||
Peer: d.Get("peer").(string),
|
||||
|
|
|
@ -19,10 +19,10 @@ func TestProvisioner(t *testing.T) {
|
|||
|
||||
func TestResourceProvisioner_Validate_good(t *testing.T) {
|
||||
c := testConfig(t, map[string]interface{}{
|
||||
"peers": []interface{}{"1.2.3.4"},
|
||||
"version": "0.32.0",
|
||||
"service_type": "systemd",
|
||||
"accept_license": false,
|
||||
"peers": []interface{}{"1.2.3.4"},
|
||||
"version": "0.32.0",
|
||||
"service_type": "systemd",
|
||||
"accept_license": false,
|
||||
})
|
||||
|
||||
warn, errs := Provisioner().Validate(c)
|
||||
|
@ -68,7 +68,7 @@ func TestResourceProvisioner_Validate_bad_service_config(t *testing.T) {
|
|||
t.Fatalf("Warnings: %v", warn)
|
||||
}
|
||||
if len(errs) != 3 {
|
||||
t.Fatalf("Should have three errors, got %d", len(errs))
|
||||
t.Fatalf("Should have three errors, got %d", len(errs))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -81,8 +81,8 @@ func TestResourceProvisioner_Validate_bad_service_definition(t *testing.T) {
|
|||
if len(warn) > 0 {
|
||||
t.Fatalf("Warnings: %v", warn)
|
||||
}
|
||||
if len(errs) != 2 {
|
||||
t.Fatalf("Should have three errors, got %d", len(errs))
|
||||
if len(errs) != 3 {
|
||||
t.Fatalf("Should have three errors, got %d", len(errs))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,6 @@ There are 2 configuration levels, `supervisor` and `service`. Configuration pla
|
|||
### Supervisor Arguments
|
||||
* `accept_license (bool)` - (Required) Set to true to accept [Habitat end user license agreement](https://www.chef.io/end-user-license-agreement/)
|
||||
* `version (string)` - (Optional) The Habitat version to install on the remote machine. If not specified, the latest available version is used.
|
||||
* `license (string)` - (Optional) Sets the acceptance of Chef licensing (one of `accept-no-persist` or `accept`): https://www.chef.io/end-user-license-agreement/
|
||||
* `auto_update (bool)` - (Optional) If set to `true`, the supervisor will auto-update itself as soon as new releases are available on the specified `channel`.
|
||||
* `http_disable (bool)` - (Optional) If set to `true`, disables the supervisor HTTP listener entirely.
|
||||
* `peer (string)` - (Optional, deprecated) IP addresses or FQDN's for other Habitat supervisors to peer with, like: `--peer 1.2.3.4 --peer 5.6.7.8`. (Defaults to none)
|
||||
|
@ -90,7 +89,7 @@ bind {
|
|||
```
|
||||
* `topology (string)` - (Optional) Topology to start service in. Possible values `standalone` or `leader`. (Defaults to `standalone`)
|
||||
* `strategy (string)` - (Optional) Update strategy to use. Possible values `at-once`, `rolling` or `none`. (Defaults to `none`)
|
||||
* `user_toml (string)` - (Optional) TOML formatted user configuration for the service. Easiest to source from a file (eg `user_toml = "${file("conf/redis.toml")}")`. (Defaults to none)
|
||||
* `user_toml (string)` - (Optional) TOML formatted user configuration for the service. Easiest to source from a file (eg `user_toml = "${file("conf/redis.toml")}"`). (Defaults to none)
|
||||
* `channel (string)` - (Optional) The release channel in the Builder service to use. (Defaults to `stable`)
|
||||
* `group (string)` - (Optional) The service group to join. (Defaults to `default`)
|
||||
* `url (string)` - (Optional) The URL of a Builder service to download packages and receive updates from. (Defaults to https://bldr.habitat.sh)
|
||||
|
|
Loading…
Reference in New Issue