Skip to content

happyDomain/ansible-collection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ansible Collection for happyDomain

The collection (happydns.happydomain) contains modules to assist in happyDomain deployment and management.

Ansible version compatibility

The collection is tested and supported with: ansible >= 2.9

Installing the collection

Before using the happyDomain collection, you need to install it using the below command:

ansible-galaxy collection install happydns.happydomain

You can also include it in a requirements.yml file and install it via ansible-galaxy collection install -r requirements.yml, using the format:

---
collections:
  - name: happydns.happydomain

Using this collection

Deploy happyDomain

To setup happyDomain as a local service (support Docker, openrc and systemd), use the role happydns.happydomain.happydomain:

  roles:
    - name: happydns.happydomain.happydomain
      use_container: no # yes if you want to use Docker instead

Create a user account on your happyDomain instance

  tasks:
    - happydns.happydomain.user:
        username: [email protected]
        password: "mySuperS3cur3P4$$w0rd"

This will create and enabled the user (no need to validate the email).

Register a NS provider

Eg. for an AXFR/DDNS provider:

  tasks:
    - happydns.happydomain.provider:
        name: test
        type: DDNSServer
        data:
          server: 192.168.0.42
          keyname: ddns
          algorithm: hmac-sha256
          keyblob: yourBASE64Secret==
        happydomain_username: [email protected]
        happydomain_password: "mySuperS3cur3P4$$w0rd"

Handle a new domain name in happyDomain

  tasks:
    - happydns.happydomain.domain:
        provider: test
        domain: happydomain.tf
        happydomain_username: [email protected]
        happydomain_password: "mySuperS3cur3P4$$w0rd"

Create a new record for a domain

First, you need a zoneid:

  tasks:
    - happydns.happydomain.domain:
        provider: test
        domain: happydomain.tf
        happydomain_username: [email protected]
        happydomain_password: "mySuperS3cur3P4$$w0rd"
      register: my_zone

Note the registered variable.

Then, use the happydns.happydomain.service module:

  tasks:
    - happydns.happydomain.service:
        happydomain_username: [email protected]
        happydomain_password: "mySuperS3cur3P4$$w0rd"
        domain: happydomain.tf
        zone: "{{ my_zone.current_zone }}"
        subdomain: "test"
        type: abstract.Server
        service:
          A: 127.0.0.1
          AAAA: "::1"
        apply_changes: yes

This will add two records under test.happydomain.tf: A and AAAA (part of abstract.Server).

Remove a given record

You'll also need a zoneid, see previous section. Then:

  tasks:
    - happydns.happydomain.service:
        happydomain_username: [email protected]
        happydomain_password: "mySuperS3cur3P4$$w0rd"
        domain: happydomain.tf
        zone: "{{ my_zone.current_zone }}"
        subdomain: "test"
        type: scvs.TXT
        service:
          content: "This is a test record"
        state: absent
        apply_changes: yes

This will remove all records matching:

test IN TXT "This is a test record"

Code of Conduct

This collection follows the Ansible project's Code of Conduct. Please read and familiarize yourself with this doc.

License

CECILL-2.1