famous-needle-81667
06/01/2022, 3:06 PMuser_data = base64encode(
templatefile("../templates/bash_script.sh.tftpl", {
internal_lb_dns_name = aws_lb.aws-internal-load-balancer.dns_name
}
)
)
How to achieve similar results with pulumi?
If it was not a templated file it would be easy, namely:
UserData: pulumi.StringPtr(base64.StdEncoding.EncodeToString(bashScriptContent))
However, I need to inject some variables into that script that will be known once some resources got created.
Any help would be appreciated, this is a part of my Master's Degree thesis and it would be a shame that this cannot be solved in Pulumi 😄
//EDIT, I'm writing in Golangwitty-candle-66007
06/01/2022, 5:34 PM.apply
or .all
to resolve those values to build the string as per: https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#allfamous-needle-81667
06/01/2022, 9:44 PMuserDataTpl, err := template.New("bash_script.tpl.sh").
ParseFiles("./templates/bash_script.tpl.sh")
if err != nil {
return err
}
userData := internalLoadBalancer.DnsName.ApplyT(
func(lbDNSName string) (*string, error) {
buf := new(bytes.Buffer)
err := userDataFrontendTpl.Execute(buf, map[string]string{"internal_lb_dns_name": lbDNSName})
userData := base64.StdEncoding.EncodeToString(buf.Bytes())
return &userData, err
},
).(pulumi.StringPtrOutput)
worked like a charm with native go templating engine