Created
January 10, 2024 13:54
-
-
Save tboerger/d36f93a329b6e61dce9761c8aab9a008 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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