thousands-librarian-6697
07/16/2024, 7:39 AMfunc main() {
pulumi.Run(func(ctx *pulumi.Context) error {
if err := network.CreateNetworkManager(ctx); err != nil {
return err
}
return nil
})
}
resource/network/main.go
func CreateNetworkManager(ctx *pulumi.Context) error {
if err := vpc.CreateVPC(ctx); err != nil {
return err
}
if err := subnet.CreateSubnet(ctx); err != nil {
return err
}
if err := firewall.CreateFirewall(ctx); err != nil {
return err
}
return nil
}
resource/network/firewall/main.go
func CreateFirewall(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
var firewallList []GCPFirewallInterface
if err := cfg.TryObject(utils.PulumiGCPResourceType.PulumiGCPFirewallList, &firewallList); err != nil {
return err
}
firewallAllowArray := compute.FirewallAllowArray{}
for _, firewallInfo := range firewallList {
for _, allow := range *firewallInfo.Allows {
portsArray := make(pulumi.StringArray, len(*allow.Ports))
for i, ports := range *allow.Ports {
portsArray[i] = pulumi.String(ports)
}
allowArgs := &compute.FirewallAllowArgs{
Protocol: pulumi.String(allow.Protocol),
Ports: portsArray,
}
firewallAllowArray = append(firewallAllowArray, allowArgs)
}
sourceArangesArray := make(pulumi.StringArray, len(firewallInfo.SourceRanges))
for i, sourceAranges := range firewallInfo.SourceRanges {
sourceArangesArray[i] = pulumi.String(sourceAranges)
}
_, err := compute.NewFirewall(ctx, firewallInfo.Name, &compute.FirewallArgs{
Name: pulumi.String(firewallInfo.Name),
Allows: firewallAllowArray,
Network: pulumi.String(firewallInfo.Network),
SourceRanges: sourceArangesArray,
})
if err != nil {
return err
}
}
return nil
}
resource/network/vpc/main.go
func CreateVPC(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
var vpcList []GCPVPCType
if err := cfg.TryObject(utils.PulumiGCPResourceType.PulumiGCPVPC, &vpcList); err != nil {
return err
}
for _, vpcInfo := range vpcList {
vpcResult, err := compute.NewNetwork(ctx, vpcInfo.Name, &compute.NetworkArgs{
Name: pulumi.String(vpcInfo.Name),
AutoCreateSubnetworks: pulumi.Bool(vpcInfo.AutoCreateSubnetworks),
Mtu: <http://pulumi.Int|pulumi.Int>(vpcInfo.Mtu),
})
}
return nil
}
pulumi.yaml
CX-GCP:pulumiGCPFirewallList:
- Name: poc-firewall-23
Network: main-vpc
Allows:
- Protocol: tcp
Ports:
- "23"
SourceRanges:
- 192.168.0.0/24
CX-GCP:pulumiGCPVPC:
- AutoCreateSubnetworks: false
Mtu: 1500
Name: main-vpc
No matter how you like to participate in developer communities, Pulumi wants to meet you there. If you want to meet other Pulumi users to share use-cases and best practices, contribute code or documentation, see us at an event, or just tell a story about something cool you did with Pulumi, you are part of our community.
Powered by