cloudflare-dns-a-record

Example:

# Add a record for 'dev.cutecode.co'.
- cloudflare-dns-a-record:
    account_mail: [email protected]
    api_token: 123..xyz
    record: dev
    domain: cutecode.co
    ip: 123.123.123.123

Description

Add an 'A' record to a domain managed via cloudflare.

Variables

Name Type Default Description

account_email

string --

The cloudflare account email. Required

api_token

string --

A cloudflare api key (beware, 'cloudflare API tokens' don't seem to work, only the 'Global API key'). Required

domain

string --

The (main) domain name. Required

ip

string --

The ip address to point to. Required

record

string --

The sub-domain name to create (without the main domain name). Required

ttl

integer 1

The TTL to give the new record. Must be between 120 and 2,147,483,647 seconds, or 1 for automatic.

Examples

Example 1

Add a record for 'dev.cutecode.co'.

Code
- cloudflare-dns-a-record:
    account_mail: [email protected]
    api_token: 123..xyz
    record: dev
    domain: cutecode.co
    ip: 123.123.123.123

Code

doc:
  short_help: Add an 'A' record to a domain managed via cloudflare.
  examples:
  - title: Add a record for 'dev.cutecode.co'.
    vars:
      account_mail: [email protected]
      api_token: 123..xyz
      record: dev
      domain: cutecode.co
      ip: 123.123.123.123
args:
  api_token:
    doc:
      short_help: A cloudflare api key (beware, 'cloudflare API tokens' don't seem
        to work, only the 'Global API key').
    type: string
    secret: true
    required: true
  account_email:
    doc:
      short_help: The cloudflare account email.
    type: string
    required: true
  domain:
    doc:
      short_help: The (main) domain name.
    type: string
    required: true
  record:
    doc:
      short_help: The sub-domain name to create (without the main domain name).
    type: string
  ip:
    doc:
      short_help: The ip address to point to.
    type: string
    required: true
  ttl:
    doc:
      short_help: The time to life of the record.
      help: |
        The TTL to give the new record.
        Must be between 120 and 2,147,483,647 seconds, or 1 for automatic.
    type: integer

    default: 1
    required: false
frecklets:
- frecklet:
    name: cloudflare_dns
    type: ansible-module
    desc:
      short: Add dns A record to cloudflare.
    properties:
      internet: true
      elevated: false
      idempotent: true
  task:
    delegate_to: localhost
  vars:
    account_api_token: '{{:: api_token ::}}'
    account_email: '{{:: account_email ::}}'
    zone: '{{:: domain ::}}'
    record: '{{:: record ::}}'
    type: A
    value: '{{:: ip ::}}'
    ttl: '{{:: ttl ::}}'
    state: present
frecklecute --community cloudflare-dns-a-record --help

Usage: frecklecute cloudflare-dns-a-record [OPTIONS]

  Add an 'A' record to a domain managed via cloudflare.

Options:
  --account-email ACCOUNT_EMAIL  The cloudflare account email.  [required]
  --api-token API_TOKEN          A cloudflare api key (beware, 'cloudflare API
                                 tokens' don't seem to work, only the 'Global
                                 API key').  [required]
  --domain DOMAIN                The (main) domain name.  [required]
  --ip IP                        The ip address to point to.  [required]
  --record RECORD                The sub-domain name to create (without the
                                 main domain name).  [required]
  --ttl TTL                      The time to life of the record.
  --help                         Show this message and exit.
# -*- coding: utf-8 -*-


#
# module path: pycklets.cloudflare_dns_a_record.CloudflareDnsARecord
#


from dataclasses import dataclass
from pyckles import AutoPycklet
from typing import *    # noqa

@dataclass
class CloudflareDnsARecord(AutoPycklet):
    """Add an 'A' record to a domain managed via cloudflare.

       Args:
         account_email: The cloudflare account email.
         api_token: A cloudflare api key (beware, 'cloudflare API tokens' don't seem to work, only the 'Global API key').
         domain: The (main) domain name.
         ip: The ip address to point to.
         record: The sub-domain name to create (without the main domain name).
         ttl: The time to life of the record.

    """

    FRECKLET_ID = "cloudflare-dns-a-record"

    account_email: str = None
    api_token: str = None
    domain: str = None
    ip: str = None
    record: str = None
    ttl: int = None


    def __post_init__(self):
        super(CloudflareDnsARecord, self).__init__(var_names=["account_email", "api_token", "domain", "ip", "record", "ttl"])


frecklet_class = CloudflareDnsARecord
# -*- coding: utf-8 -*-


#
# module path: pycklets.cloudflare_dns_a_record.CloudflareDnsARecord
#


from pyckles import AutoPycklet

class CloudflareDnsARecord(AutoPycklet):
    """Add an 'A' record to a domain managed via cloudflare.

       Args:
         account_email: The cloudflare account email.
         api_token: A cloudflare api key (beware, 'cloudflare API tokens' don't seem to work, only the 'Global API key').
         domain: The (main) domain name.
         ip: The ip address to point to.
         record: The sub-domain name to create (without the main domain name).
         ttl: The time to life of the record.

    """

    FRECKLET_ID = "cloudflare-dns-a-record"

    def __init__(self, account_email=None, api_token=None, domain=None, ip=None, record=None, ttl=1):

        super(CloudflareDnsARecord, self).__init__(var_names=["account_email", "api_token", "domain", "ip", "record", "ttl"])
        self._account_email = account_email
        self._api_token = api_token
        self._domain = domain
        self._ip = ip
        self._record = record
        self._ttl = ttl

    @property
    def account_email(self):
        return self._account_email

    @account_email.setter
    def account_email(self, account_email):
        self._account_email = account_email

    @property
    def api_token(self):
        return self._api_token

    @api_token.setter
    def api_token(self, api_token):
        self._api_token = api_token

    @property
    def domain(self):
        return self._domain

    @domain.setter
    def domain(self, domain):
        self._domain = domain

    @property
    def ip(self):
        return self._ip

    @ip.setter
    def ip(self, ip):
        self._ip = ip

    @property
    def record(self):
        return self._record

    @record.setter
    def record(self, record):
        self._record = record

    @property
    def ttl(self):
        return self._ttl

    @ttl.setter
    def ttl(self, ttl):
        self._ttl = ttl



frecklet_class = CloudflareDnsARecord