Openstack Environment Variable Mapping

This commit is contained in:
Derek Lemon -T (delemon - AEROTEK INC at Cisco) 2019-01-14 09:11:03 -07:00
parent d0713c633a
commit 4e752ca62d
5 changed files with 90 additions and 0 deletions

View File

@ -140,6 +140,25 @@ func (i *Installation) buildSystemdJob() *nodetasks.Service {
buffer.WriteString("\" ")
}
// Pass in required credentials when using user-defined swift endpoint
if os.Getenv("OS_AUTH_URL") != "" {
for _, envVar := range []string{
"OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME",
"OS_PROJECT_DOMAIN_NAME", "OS_PROJECT_DOMAIN_ID",
"OS_DOMAIN_NAME", "OS_DOMAIN_ID",
"OS_USERNAME",
"OS_PASSWORD",
"OS_AUTH_URL",
"OS_REGION_NAME",
} {
buffer.WriteString("\"")
buffer.WriteString(envVar)
buffer.WriteString("=")
buffer.WriteString(os.Getenv(envVar))
buffer.WriteString("\" ")
}
}
if os.Getenv("DIGITALOCEAN_ACCESS_TOKEN") != "" {
buffer.WriteString("\"DIGITALOCEAN_ACCESS_TOKEN=")
buffer.WriteString(os.Getenv("DIGITALOCEAN_ACCESS_TOKEN"))

View File

@ -104,6 +104,43 @@ func (b *CloudConfigBuilder) Build(c *fi.ModelBuilderContext) error {
// We need this to support Kubernetes vSphere CloudProvider < v1.5.3
lines = append(lines, "[disk]")
lines = append(lines, "scsicontrollertype = pvscsi")
case "openstack":
osc := cloudConfig.Openstack
if osc == nil {
break
}
lines = append(lines,
fmt.Sprintf("auth-url=\"%s\"", os.Getenv("OS_AUTH_URL")),
fmt.Sprintf("username=\"%s\"", os.Getenv("OS_USERNAME")),
fmt.Sprintf("password=\"%s\"", os.Getenv("OS_PASSWORD")),
fmt.Sprintf("region=\"%s\"", os.Getenv("OS_REGION_NAME")),
fmt.Sprintf("tenant-id=\"%s\"", os.Getenv("OS_TENANT_ID")),
fmt.Sprintf("tenant-name=\"%s\"", os.Getenv("OS_TENANT_NAME")),
fmt.Sprintf("domain-name=\"%s\"", os.Getenv("OS_DOMAIN_NAME")),
fmt.Sprintf("domain-id=\"%s\"", os.Getenv("OS_DOMAIN_ID")),
"",
)
if lb := osc.Loadbalancer; lb != nil {
lines = append(lines,
"[LoadBalancer]",
fmt.Sprintf("floating-network-id=%s", fi.StringValue(lb.FloatingNetwork)),
fmt.Sprintf("lb-method=%s", fi.StringValue(lb.Method)),
fmt.Sprintf("lb-provider=%s", fi.StringValue(lb.Provider)),
fmt.Sprintf("use-octavia=%t", fi.BoolValue(lb.UseOctavia)),
"",
)
}
if monitor := osc.Monitor; monitor != nil {
lines = append(lines,
"create-monitor=yes",
fmt.Sprintf("monitor-delay=%s", fi.StringValue(monitor.Delay)),
fmt.Sprintf("monitor-timeout=%s", fi.StringValue(monitor.Timeout)),
fmt.Sprintf("monitor-max-retries=%d", fi.IntValue(monitor.MaxRetries)),
"",
)
}
}
config := "[global]\n" + strings.Join(lines, "\n") + "\n"

View File

@ -410,6 +410,24 @@ func (t *ProtokubeBuilder) ProtokubeEnvironmentVariables() string {
buffer.WriteString(" ")
}
if os.Getenv("OS_AUTH_URL") != "" {
for _, envVar := range []string{
"OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME",
"OS_PROJECT_DOMAIN_NAME", "OS_PROJECT_DOMAIN_ID",
"OS_DOMAIN_NAME", "OS_DOMAIN_ID",
"OS_USERNAME",
"OS_PASSWORD",
"OS_AUTH_URL",
"OS_REGION_NAME",
} {
buffer.WriteString(" -e ")
buffer.WriteString(envVar)
buffer.WriteString("='")
buffer.WriteString(os.Getenv(envVar))
buffer.WriteString("'")
}
}
if kops.CloudProviderID(t.Cluster.Spec.CloudProvider) == kops.CloudProviderDO && os.Getenv("DIGITALOCEAN_ACCESS_TOKEN") != "" {
buffer.WriteString(" ")
buffer.WriteString("-e 'DIGITALOCEAN_ACCESS_TOKEN=")

View File

@ -72,6 +72,21 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
env["S3_SECRET_ACCESS_KEY"] = os.Getenv("S3_SECRET_ACCESS_KEY")
}
// Pass in required credentials when using user-defined swift endpoint
if os.Getenv("OS_AUTH_URL") != "" {
for _, envVar := range []string{
"OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME",
"OS_PROJECT_DOMAIN_NAME", "OS_PROJECT_DOMAIN_ID",
"OS_DOMAIN_NAME", "OS_DOMAIN_ID",
"OS_USERNAME",
"OS_PASSWORD",
"OS_AUTH_URL",
"OS_REGION_NAME",
} {
env[envVar] = os.Getenv(envVar)
}
}
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderDO {
doToken := os.Getenv("DIGITALOCEAN_ACCESS_TOKEN")
if doToken != "" {

View File

@ -135,6 +135,7 @@ func (oc OpenstackConfig) GetCredential() (gophercloud.AuthOptions, error) {
// prioritize environment config
env, enverr := openstack.AuthOptionsFromEnv()
if enverr != nil {
glog.Warningf("Could not initialize swift from environment: %v", enverr)
// fallback to config file
return oc.getCredentialFromFile()
}