Skip to content

Instantly share code, notes, and snippets.

@tboerger
Created January 10, 2024 13:54
Show Gist options
  • Save tboerger/d36f93a329b6e61dce9761c8aab9a008 to your computer and use it in GitHub Desktop.
Save tboerger/d36f93a329b6e61dce9761c8aab9a008 to your computer and use it in GitHub Desktop.
ipv4Address := ipv4.IpAddress.ApplyT(func(val string) string {
return val
})
ipv6Address := ipv6.IpAddress.ApplyT(func(val string) string {
return fmt.Sprintf("%s1", val)
})
vars := variables{
Inventory: []inventory{
{
Name: stack.config.Name,
IPv4: ipv4Address,
IPv6: ipv6Address,
},
},
}
workDir, err := os.MkdirTemp("/tmp", "ansible-")
if err != nil {
stack.logger.Error().
Err(err).
Str("path", workDir).
Msg("Failed to create working directory")
return err
}
// defer os.RemoveAll(workDir)
inventory, err := os.Create(
path.Join(workDir, "inventory.yaml"),
)
if err != nil {
stack.logger.Error().
Err(err).
Msg("Failed to create inventory")
return err
}
if err := tmpls.ExecuteTemplate(
inventory,
"inventory.tmpl",
vars,
); err != nil {
stack.logger.Error().
Err(err).
Msg("Failed to write inventory")
return err
}
playbook, err := os.Create(
path.Join(workDir, "playbook.yaml"),
)
if err != nil {
stack.logger.Error().
Err(err).
Msg("Failed to create playbook")
return err
}
if err := tmpls.ExecuteTemplate(
playbook,
"playbook.tmpl",
vars,
); err != nil {
stack.logger.Error().
Err(err).
Msg("Failed to write playbook")
return err
}
stack.logger.Debug().
Msg("Starting to apply ansible playbook")
_, err = local.NewCommand(
ctx,
"playbook",
&local.CommandArgs{
Dir: pulumi.String(workDir),
AssetPaths: pulumi.StringArray{
pulumi.String("inventory.yaml"),
pulumi.String("playbook.yaml"),
},
Create: pulumi.String("ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -u root -i inventory.yaml playbook.yaml"),
},
pulumi.DependsOn([]pulumi.Resource{
server,
}),
)
if err != nil {
stack.logger.Error().
Err(err).
Msg("Failed to apply ansible playbook")
return err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment