pulumi-powerdns


Namepulumi-powerdns JSON
Version 0.0.4 PyPI version JSON
download
home_pagehttps://pulumi.com
SummaryThe Pulumi PowerDNS provider provides resources to interact with a PowerDNS Authoritative DNS Server.
upload_time2023-10-18 10:05:37
maintainer
docs_urlNone
author
requires_python>=3.7
licenseMPL-2.0
keywords category/infrastructure kind/native pulumi powerdns dns
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Pulumi PowerDNS Native Provider

This 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.

## Installing

This package is available for several languages/platforms:

### Node.js (JavaScript/TypeScript)

To use from JavaScript or TypeScript in Node.js, install using either `npm`:

```bash
npm install @nextpart/powerdns
```

or `yarn`:

```bash
yarn add @nextpart/powerdns
```

### Python

To use from Python, install using `pip`:

```bash
pip install pulumi-powerdns
```

### Go

To use from Go, use `go get` to grab the latest version of the library:

```bash
go get github.com/nextpart/pulumi-powerdns-native/sdk/go/...
```

### .NET

To use from .NET, install using `dotnet add package`:

```bash
dotnet add package Pulumi.Powerdns
```

## Example

### Node.js (JavaScript/TypeScript)

```typescript
import * as pulumi from "@pulumi/pulumi";
import * as powerdns from "@nextpart/powerdns";

const zone = new powerdns.Zone("foobar", { name: "foobar.com.", kind: "master", account: "admin"});

const record = new powerdns.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"]
})

const record2 = new powerdns.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"]
})
```
 
### Python

```python
import pulumi
import pulumi_powerdns as pdns

test = 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,
)
```

### Go

```go
import (
	"fmt"
	pdns "github.com/nextpart/pulumi-powerdns-native/sdk/go/powerdns"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	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"),
        })

        if err != nil {
            return err
        }

		_, 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),

		})
		return err
	})
}
```

### .NET

```csharp
using System.Collections.Generic;
using Pulumi;
using Pulumi.Powerdns;

return await Deployment.RunAsync(() =>
{
   // Add your resources here
   // e.g. var resource = new Resource("name", new ResourceArgs { });
   var zone = new Zone("foobar", new ZoneArgs {
      Name = "foobar.com.",
      Kind = "master",
      Account = "admin",
   });

   var record = new Record("record", new RecordArgs {
      Name = "test.foobar.com.",
      Zone = zone.Name,
      Type = "A",
      Records = new List<string>(){"10.0.0.0", "10.0.0.2"},
      Ttl = 300,
   });

   // Export outputs here
   return new Dictionary<string, object?>
   {
      ["outputKey"] = "outputValue"
   };
});
```

### Configuration

The following configuration points are available for the `powerdns` provider:
* `powerdns:url` (environment: `POWERDNS_URL`) - URL of the powerdns api endpoint
* `powerdns:key` (environment: `POWERDNS_KEY`) - The API key for the powerdns api endpoint

## Development
### Prerequisites

Ensure the following tools are installed and present in your `$PATH`:

* [`pulumictl`](https://github.com/pulumi/pulumictl#installation)
* [Go 1.21](https://golang.org/dl/) or 1.latest
* [NodeJS](https://nodejs.org/en/) 14.x.  We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage NodeJS installations.
* [Yarn](https://yarnpkg.com/)
* [TypeScript](https://www.typescriptlang.org/)
* [Python](https://www.python.org/downloads/) (called as `python3`).  For recent versions of MacOS, the system-installed version is fine.
* [.NET](https://dotnet.microsoft.com/download)

#### Build the provider and install the plugin

   ```bash
   $ make build install
   ```
   
This will:

1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored)
2. Create the provider binary and place it in the `./bin` folder (gitignored)
3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder
4. Install the provider on your machine.

#### Test against the example
   
```bash
$ cd examples/simple
$ yarn link @nextpart/powerdns
$ yarn install
$ pulumi stack init test
$ pulumi up
```

Now that you have completed all of the above steps, you have a working provider that generates a random string for you.

#### A brief repository overview

You now have:

1. A `provider/` folder containing the building and implementation logic
    1. `cmd/pulumi-resource-powerdns/main.go` - holds the provider's sample implementation logic.
2. `deployment-templates` - a set of files to help you around deployment and publication
3. `sdk` - holds the generated code libraries created by `pulumi-gen-powerdns/main.go`
4. `examples` a folder of Pulumi programs to try locally and/or use in CI.
5. A `Makefile` and this `README`.

#### Additional Details

This repository depends on the pulumi-go-provider library. For more details on building providers, please check
the [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider).

### Build Examples

Create an example program using the resources defined in your provider, and place it in the `examples/` folder.

You can now repeat the steps for [build, install, and test](#test-against-the-example).

## References

Other resources/examples for implementing providers:
* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go)
* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider)



            

Raw data

            {
    "_id": null,
    "home_page": "https://pulumi.com",
    "name": "pulumi-powerdns",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "category/infrastructure kind/native pulumi powerdns dns",
    "author": "",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/a2/9d/ceb58070b0b789c2a9f317bd5fb1acab65b94f556a239d2862b506eabf84/pulumi_powerdns-0.0.4.tar.gz",
    "platform": null,
    "description": "# Pulumi PowerDNS Native Provider\n\nThis repository is a contains a pulumi native provider for the PowerDNS Authoritative Nameserver. This allow the creation of zones and records.\n\n> **NOTE:** This provider is experimental. Not save for production use.\n\n## Installing\n\nThis package is available for several languages/platforms:\n\n### Node.js (JavaScript/TypeScript)\n\nTo use from JavaScript or TypeScript in Node.js, install using either `npm`:\n\n```bash\nnpm install @nextpart/powerdns\n```\n\nor `yarn`:\n\n```bash\nyarn add @nextpart/powerdns\n```\n\n### Python\n\nTo use from Python, install using `pip`:\n\n```bash\npip install pulumi-powerdns\n```\n\n### Go\n\nTo use from Go, use `go get` to grab the latest version of the library:\n\n```bash\ngo get github.com/nextpart/pulumi-powerdns-native/sdk/go/...\n```\n\n### .NET\n\nTo use from .NET, install using `dotnet add package`:\n\n```bash\ndotnet add package Pulumi.Powerdns\n```\n\n## Example\n\n### Node.js (JavaScript/TypeScript)\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as powerdns from \"@nextpart/powerdns\";\n\nconst zone = new powerdns.Zone(\"foobar\", { name: \"foobar.com.\", kind: \"master\", account: \"admin\"});\n\nconst record = new powerdns.Record(\"test\", { \n    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\"]\n})\n\nconst record2 = new powerdns.Record(\"foo\", { \n    zone: \"foobar.com.\", type: \"A\", name: \"foo.foobar.com.\", ttl: 300, records : [\"10.0.0.1\", \"10.0.0.3\", \"10.0.0.4\"]\n})\n```\n \n### Python\n\n```python\nimport pulumi\nimport pulumi_powerdns as pdns\n\ntest = pdns.Zone(\"test\", name=\"foobar.com.\", kind=\"master\", account=\"admin\")\n\nrecord = pdns.Record(\n    \"record\",\n    zone=\"foobar.com.\",\n    name=\"test.foobar.com.\",\n    type=\"A\",\n    records=[\"10.0.0.0\", \"10.0.0.1\"],\n    ttl=300,\n)\n```\n\n### Go\n\n```go\nimport (\n\t\"fmt\"\n\tpdns \"github.com/nextpart/pulumi-powerdns-native/sdk/go/powerdns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n        _, err := pdns.NewZone(ctx, \"foobar.com\", &pdns.ZoneArgs{\n            Name:    pulumi.String(\"foobar.com.\"),\n            Kind:    pulumi.String(\"master\"),\n            Account: pulumi.String(\"admin\"),\n        })\n\n        if err != nil {\n            return err\n        }\n\n\t\t_, err = pdns.NewRecord(ctx, \"test.foobar.com.\", &pdns.RecordArgs{\n\t\t\tName: pulumi.String(\"test.foobar.com.\"),\n\t\t\tZone: pulumi.String(\"foobar.com.\"),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tRecords: pulumi.ToStringArray([]string{\"10.0.0.1\", \"10.0.0.2\", \"10.0.3.0\"}),\n\t\t\tTtl: pulumi.Int(300),\n\n\t\t})\n\t\treturn err\n\t})\n}\n```\n\n### .NET\n\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Pulumi.Powerdns;\n\nreturn await Deployment.RunAsync(() =>\n{\n   // Add your resources here\n   // e.g. var resource = new Resource(\"name\", new ResourceArgs { });\n   var zone = new Zone(\"foobar\", new ZoneArgs {\n      Name = \"foobar.com.\",\n      Kind = \"master\",\n      Account = \"admin\",\n   });\n\n   var record = new Record(\"record\", new RecordArgs {\n      Name = \"test.foobar.com.\",\n      Zone = zone.Name,\n      Type = \"A\",\n      Records = new List<string>(){\"10.0.0.0\", \"10.0.0.2\"},\n      Ttl = 300,\n   });\n\n   // Export outputs here\n   return new Dictionary<string, object?>\n   {\n      [\"outputKey\"] = \"outputValue\"\n   };\n});\n```\n\n### Configuration\n\nThe following configuration points are available for the `powerdns` provider:\n* `powerdns:url` (environment: `POWERDNS_URL`) - URL of the powerdns api endpoint\n* `powerdns:key` (environment: `POWERDNS_KEY`) - The API key for the powerdns api endpoint\n\n## Development\n### Prerequisites\n\nEnsure the following tools are installed and present in your `$PATH`:\n\n* [`pulumictl`](https://github.com/pulumi/pulumictl#installation)\n* [Go 1.21](https://golang.org/dl/) or 1.latest\n* [NodeJS](https://nodejs.org/en/) 14.x.  We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage NodeJS installations.\n* [Yarn](https://yarnpkg.com/)\n* [TypeScript](https://www.typescriptlang.org/)\n* [Python](https://www.python.org/downloads/) (called as `python3`).  For recent versions of MacOS, the system-installed version is fine.\n* [.NET](https://dotnet.microsoft.com/download)\n\n#### Build the provider and install the plugin\n\n   ```bash\n   $ make build install\n   ```\n   \nThis will:\n\n1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored)\n2. Create the provider binary and place it in the `./bin` folder (gitignored)\n3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder\n4. Install the provider on your machine.\n\n#### Test against the example\n   \n```bash\n$ cd examples/simple\n$ yarn link @nextpart/powerdns\n$ yarn install\n$ pulumi stack init test\n$ pulumi up\n```\n\nNow that you have completed all of the above steps, you have a working provider that generates a random string for you.\n\n#### A brief repository overview\n\nYou now have:\n\n1. A `provider/` folder containing the building and implementation logic\n    1. `cmd/pulumi-resource-powerdns/main.go` - holds the provider's sample implementation logic.\n2. `deployment-templates` - a set of files to help you around deployment and publication\n3. `sdk` - holds the generated code libraries created by `pulumi-gen-powerdns/main.go`\n4. `examples` a folder of Pulumi programs to try locally and/or use in CI.\n5. A `Makefile` and this `README`.\n\n#### Additional Details\n\nThis repository depends on the pulumi-go-provider library. For more details on building providers, please check\nthe [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider).\n\n### Build Examples\n\nCreate an example program using the resources defined in your provider, and place it in the `examples/` folder.\n\nYou can now repeat the steps for [build, install, and test](#test-against-the-example).\n\n## References\n\nOther resources/examples for implementing providers:\n* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go)\n* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider)\n\n\n",
    "bugtrack_url": null,
    "license": "MPL-2.0",
    "summary": "The Pulumi PowerDNS provider provides resources to interact with a PowerDNS Authoritative DNS Server.",
    "version": "0.0.4",
    "project_urls": {
        "Homepage": "https://pulumi.com",
        "Repository": "https://github.com/nextpart/pulumi-powerdns-native"
    },
    "split_keywords": [
        "category/infrastructure",
        "kind/native",
        "pulumi",
        "powerdns",
        "dns"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a29dceb58070b0b789c2a9f317bd5fb1acab65b94f556a239d2862b506eabf84",
                "md5": "88098cbb50ad1371c7c6789e0b633efd",
                "sha256": "95146fc69e5f81a069f3d760288cb64d6091aa4c81d66af57d2913714397b564"
            },
            "downloads": -1,
            "filename": "pulumi_powerdns-0.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "88098cbb50ad1371c7c6789e0b633efd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 12834,
            "upload_time": "2023-10-18T10:05:37",
            "upload_time_iso_8601": "2023-10-18T10:05:37.436397Z",
            "url": "https://files.pythonhosted.org/packages/a2/9d/ceb58070b0b789c2a9f317bd5fb1acab65b94f556a239d2862b506eabf84/pulumi_powerdns-0.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-18 10:05:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nextpart",
    "github_project": "pulumi-powerdns-native",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pulumi-powerdns"
}
        
Elapsed time: 0.20080s