Package: pulumi-powerdns
Pulumi PowerDNS Native ProviderThis repository is a contains a pulumi native provider for the PowerDNS Authoritative Nameserver. This allow the creation of zones and records.NOTE:This provider is experimental. Not save for production use.InstallingThis package is available for several languages/platforms:Node.js (JavaScript/TypeScript)To use from JavaScript or TypeScript in Node.js, install using eithernpm:npminstall@nextpart/powerdnsoryarn:yarnadd@nextpart/powerdnsPythonTo use from Python, install usingpip:pipinstallpulumi-powerdnsGoTo use from Go, usego getto grab the latest version of the library:gogetgithub.com/nextpart/pulumi-powerdns-native/sdk/go/....NETTo use from .NET, install usingdotnet add package:dotnetaddpackagePulumi.PowerdnsExampleNode.js (JavaScript/TypeScript)import*aspulumifrom"@pulumi/pulumi";import*aspowerdnsfrom"@nextpart/powerdns";constzone=newpowerdns.Zone("foobar",{name:"foobar.com.",kind:"master",account:"admin"});constrecord=newpowerdns.Record("test",{zone:"foobar.com.",type:"A",name:"test.foobar.com.",ttl:300,records:["10.0.0.1","10.0.0.2","10.0.0.3","10.0.0.4"]})constrecord2=newpowerdns.Record("foo",{zone:"foobar.com.",type:"A",name:"foo.foobar.com.",ttl:300,records:["10.0.0.1","10.0.0.3","10.0.0.4"]})Pythonimportpulumiimportpulumi_powerdnsaspdnstest=pdns.Zone("test",name="foobar.com.",kind="master",account="admin")record=pdns.Record("record",zone="foobar.com.",name="test.foobar.com.",type="A",records=["10.0.0.0","10.0.0.1"],ttl=300,)Goimport("fmt"pdns"github.com/nextpart/pulumi-powerdns-native/sdk/go/powerdns""github.com/pulumi/pulumi/sdk/v3/go/pulumi")funcmain(){pulumi.Run(func(ctx*pulumi.Context)error{_,err:=pdns.NewZone(ctx,"foobar.com",&pdns.ZoneArgs{Name:pulumi.String("foobar.com."),Kind:pulumi.String("master"),Account:pulumi.String("admin"),})iferr!=nil{returnerr}_,err=pdns.NewRecord(ctx,"test.foobar.com.",&pdns.RecordArgs{Name:pulumi.String("test.foobar.com."),Zone:pulumi.String("foobar.com."),Type:pulumi.String("A"),Records:pulumi.ToStringArray([]string{"10.0.0.1","10.0.0.2","10.0.3.0"}),Ttl:pulumi.Int(300),})returnerr})}.NETusingSystem.Collections.Generic;usingPulumi;usingPulumi.Powerdns;returnawaitDeployment.RunAsync(()=>{// Add your resources here// e.g. var resource = new Resource("name", new ResourceArgs { });varzone=newZone("foobar",newZoneArgs{Name="foobar.com.",Kind="master",Account="admin",});varrecord=newRecord("record",newRecordArgs{Name="test.foobar.com.",Zone=zone.Name,Type="A",Records=newList<string>(){"10.0.0.0","10.0.0.2"},Ttl=300,});// Export outputs herereturnnewDictionary<string,object?>{["outputKey"]="outputValue"};});ConfigurationThe following configuration points are available for thepowerdnsprovider:powerdns:url(environment:POWERDNS_URL) - URL of the powerdns api endpointpowerdns:key(environment:POWERDNS_KEY) - The API key for the powerdns api endpointDevelopmentPrerequisitesEnsure the following tools are installed and present in your$PATH:pulumictlGo 1.21or 1.latestNodeJS14.x.  We recommend usingnvmto manage NodeJS installations.YarnTypeScriptPython(called aspython3).  For recent versions of MacOS, the system-installed version is fine..NETBuild the provider and install the plugin$makebuildinstallThis will:Create the SDK codegen binary and place it in a./binfolder (gitignored)Create the provider binary and place it in the./binfolder (gitignored)Generate the dotnet, Go, Node, and Python SDKs and place them in the./sdkfolderInstall the provider on your machine.Test against the example$cdexamples/simple
$yarnlink@nextpart/powerdns
$yarninstall
$pulumistackinittest$pulumiupNow that you have completed all of the above steps, you have a working provider that generates a random string for you.A brief repository overviewYou now have:Aprovider/folder containing the building and implementation logiccmd/pulumi-resource-powerdns/main.go- holds the provider's sample implementation logic.deployment-templates- a set of files to help you around deployment and publicationsdk- holds the generated code libraries created bypulumi-gen-powerdns/main.goexamplesa folder of Pulumi programs to try locally and/or use in CI.AMakefileand thisREADME.Additional DetailsThis repository depends on the pulumi-go-provider library. For more details on building providers, please check
thePulumi Go Provider docs.Build ExamplesCreate an example program using the resources defined in your provider, and place it in theexamples/folder.You can now repeat the steps forbuild, install, and test.ReferencesOther resources/examples for implementing providers:Pulumi Command providerPulumi Go Provider repository