152 lines
3.5 KiB
Markdown
152 lines
3.5 KiB
Markdown
# Ansible Collection for happyDomain
|
|
|
|
The collection (`happydns.happydomain`) contains modules to assist in [happyDomain](https://happydomain.org/) 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:
|
|
|
|
```yaml
|
|
---
|
|
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`:
|
|
|
|
```yaml
|
|
roles:
|
|
- name: happydns.happydomain.happydomain
|
|
use_container: no # yes if you want to use Docker instead
|
|
```
|
|
|
|
### Create a user account on your happyDomain instance
|
|
|
|
```yaml
|
|
tasks:
|
|
- happydns.happydomain.user:
|
|
username: frederic@happydomain.org
|
|
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:
|
|
|
|
```yaml
|
|
tasks:
|
|
- happydns.happydomain.provider:
|
|
name: test
|
|
type: DDNSServer
|
|
data:
|
|
server: 192.168.0.42
|
|
keyname: ddns
|
|
algorithm: hmac-sha256
|
|
keyblob: yourBASE64Secret==
|
|
happydomain_username: frederic@happydomain.org
|
|
happydomain_password: "mySuperS3cur3P4$$w0rd"
|
|
```
|
|
|
|
|
|
### Handle a new domain name in happyDomain
|
|
|
|
```yaml
|
|
tasks:
|
|
- happydns.happydomain.domain:
|
|
provider: test
|
|
domain: happydomain.tf
|
|
happydomain_username: frederic@happydomain.org
|
|
happydomain_password: "mySuperS3cur3P4$$w0rd"
|
|
```
|
|
|
|
### Create a new record for a domain
|
|
|
|
First, you need a zoneid:
|
|
|
|
```yaml
|
|
tasks:
|
|
- happydns.happydomain.domain:
|
|
provider: test
|
|
domain: happydomain.tf
|
|
happydomain_username: frederic@happydomain.org
|
|
happydomain_password: "mySuperS3cur3P4$$w0rd"
|
|
register: my_zone
|
|
```
|
|
|
|
Note the `register`ed variable.
|
|
|
|
Then, use the `happydns.happydomain.service` module:
|
|
|
|
```yaml
|
|
tasks:
|
|
- happydns.happydomain.service:
|
|
happydomain_username: frederic@happydomain.org
|
|
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:
|
|
|
|
```yaml
|
|
tasks:
|
|
- happydns.happydomain.service:
|
|
happydomain_username: frederic@happydomain.org
|
|
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](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html). Please read and familiarize yourself with this doc.
|
|
|
|
|
|
## License
|
|
|
|
CECILL-2.1
|