Sign inSign up

jetrails/drone-cloudflare-dns

By jetrails

•Updated over 3 years ago

Drone plugin to control simple DNS records via Cloudflare's API

Image
1

888

jetrails/drone-cloudflare-dns repository overview

⁠Drone — Cloudflare DNS

Drone plugin to control simple DNS records via Cloudflare's API

⁠About

Our Drone plugin enables the ability for your pipeline to interface with Cloudflare's API to create/update/delete DNS records. This plugin is written in Go and it uses the cloudflare-go⁠ package to communicate with Cloudflare's API. For information on Cloudflare's API please refer to their documentation⁠ page.

⁠Cloudflare Token

The API token that is used to authenticate with Cloudflare's API can be created in Cloudflare's dashboard. It is recommended to create an API token that includes only the zone resource you want to manipulate and give edit permissions only to the DNS resource.

⁠Build

Develop locally by running the plugin with the following commands. Also please note that you should specify environmental variables for the plugin either via the inline method (FOO=bar go run src/main) or via the export FOO=bar method before the go run command.

$ dep ensure
$ go run src/main.go

⁠Docker

Drone plugins work off of docker images. The folloing commands will go over building, pushing, and running the docker image for this plugin.

⁠Build Docker Image:
$ docker build -t jetrails/drone-cloudflare-dns .
⁠Run Docker Container:

You can then replicate the command that Drone will use to launch the plugin by running:

$ docker run --rm \
	-e PLUGIN_API_TOKEN="u4C7ev06GMS8_vWBTpjqtVReT3I7FwGpW7MG44ZD" \
	-e PLUGIN_ZONE_IDENTIFIER="eJzrjE44s6Ki67x1tSDJzI8LdXxM3nj7" \
	-e PLUGIN_ACTION="set" \
	-e PLUGIN_RECORD_TYPE="cname" \
	-e PLUGIN_RECORD_NAME="example.com" \
	-e PLUGIN_RECORD_CONTENT="google.com" \
	-e PLUGIN_RECORD_PROXIED="true" \
	-e PLUGIN_RECORD_TTL="3600" \
	-v $(pwd):/drone/src \
	-w /drone/src \
	jetrails/drone-cloudflare-dns
⁠Push Docker Image:

Finally, push this image to our Docker Hub repository⁠ (assuming you have permission):

$ docker push jetrails/drone-cloudflare-dns

⁠Usage

There are two values for action, set and unset. If set is choosen and a record does not already exist, then the record is created. If set is choosen and the record already exists, then the record is updated. It is recommended that the record_name value be always set to the FQDN. Please refer to the table below with all possible settings that can be passed to the plugin:

NameRequiredDefaultCase-SensitiveType
api_tokenYes-YesSTRING
zone_identifierYes-YesSTRING
actionYes-NoENUM[set,unset]
record_typeYes-NoENUM[a,cname,...]
record_nameYes-YesSTRING
record_contentaction == set-YesSTRING
record_proxiedNotrueN/ASTRING
record_ttlNo1N/AINT
record_priorityNo1N/AINT
debugNofalseN/ASTRING

⁠Examples

kind: pipeline
name: default

steps:
-   name: cloudflare
    image: jetrails/drone-cloudflare-dns
    settings:
        api_token:
            from_secret: cloudflare_token
        zone_identifier:
            from_secret: cloudflare_zone_identifier
        action: set
        record_type: a
        record_name: example.com
        record_content: 127.0.0.1
        record_proxied: false
kind: pipeline
name: default

steps:
-   name: cloudflare
    image: jetrails/drone-cloudflare-dns
    settings:
        api_token:
            from_secret: cloudflare_token
        zone_identifier:
            from_secret: cloudflare_zone_identifier
        action: unset
        record_type: a
        record_name: example.com

⁠Feature Requests / Issues

Feel free to open an issue for any feature requests and issues that you may come across. For furthur inquery, please contact [email protected]⁠.

Tag summary

Content type

Image

Digest

sha256:37d73e46f…

Size

10.9 MB

Last updated

over 3 years ago

docker pull jetrails/drone-cloudflare-dns