Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
767316125d | |||
995592a555 | |||
f1abb8cb37 | |||
6544f2acc8 | |||
bebccfab99 |
17
README.md
17
README.md
@ -12,6 +12,18 @@ Ansible libraries for managing Gandi resources.
|
|||||||
gather_facts: false
|
gather_facts: false
|
||||||
connection: local
|
connection: local
|
||||||
tasks:
|
tasks:
|
||||||
|
- name: Prepare Python dependencies
|
||||||
|
become: true
|
||||||
|
apt:
|
||||||
|
name: python3-pip
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Install dns-lexicon system wide
|
||||||
|
become: true
|
||||||
|
pip:
|
||||||
|
name: dns-lexicon==3.3.19
|
||||||
|
executable: /usr/bin/pip3
|
||||||
|
|
||||||
- name: Create foobar.autonomic.zone
|
- name: Create foobar.autonomic.zone
|
||||||
gandi_dns:
|
gandi_dns:
|
||||||
gandi_rest_token: abc...
|
gandi_rest_token: abc...
|
||||||
@ -32,7 +44,7 @@ Ansible libraries for managing Gandi resources.
|
|||||||
- [dns-lexicon >= 3.3.19](https://pypi.org/project/dns-lexicon/) (if using `gandi_dns` module)
|
- [dns-lexicon >= 3.3.19](https://pypi.org/project/dns-lexicon/) (if using `gandi_dns` module)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ pip install ansible==2.6.9 "dns-lexicon[gandi]==3.3.19"
|
$ pip install ansible==2.6.9 dns-lexicon==3.3.19
|
||||||
```
|
```
|
||||||
|
|
||||||
These should be present on the localhost where you run Ansible.
|
These should be present on the localhost where you run Ansible.
|
||||||
@ -63,8 +75,7 @@ task or expose it in the environment and it will be picked up.
|
|||||||
Include an entry in your `requirements.yml` like so.
|
Include an entry in your `requirements.yml` like so.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- src: https://git.autonomic.zone/autonomic-cooperative/autonomic.gandi
|
- src: https://git.autonomic.zone/autonomic-cooperative/autonomic.gandi/archive/0.0.5.tar.gz
|
||||||
version: 0.0.3
|
|
||||||
name: autonomic.gandi
|
name: autonomic.gandi
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -5,11 +5,7 @@ import os
|
|||||||
import traceback
|
import traceback
|
||||||
from subprocess import CalledProcessError, check_output
|
from subprocess import CalledProcessError, check_output
|
||||||
|
|
||||||
from ansible.module_utils.basic import (
|
from ansible.module_utils.basic import AnsibleModule, env_fallback
|
||||||
AnsibleModule,
|
|
||||||
env_fallback,
|
|
||||||
missing_required_lib,
|
|
||||||
)
|
|
||||||
|
|
||||||
DOCUMENTATION = """
|
DOCUMENTATION = """
|
||||||
---
|
---
|
||||||
@ -74,18 +70,19 @@ def error_msg(domain):
|
|||||||
).format(domain=domain)
|
).format(domain=domain)
|
||||||
|
|
||||||
|
|
||||||
def get_env():
|
def get_env(module):
|
||||||
"""Build environment for running command-line commands."""
|
"""Build environment for running command-line commands."""
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
env["PROVIDER"] = "gandi"
|
env["PROVIDER"] = "gandi"
|
||||||
env["LEXICON_GANDI_API_PROTOCOL"] = "rest"
|
env["LEXICON_GANDI_API_PROTOCOL"] = "rest"
|
||||||
|
env["LEXICON_GANDI_AUTH_TOKEN"] = module.params["gandi_rest_token"]
|
||||||
return env
|
return env
|
||||||
|
|
||||||
|
|
||||||
def retrieve_domain_info(module):
|
def retrieve_domain_info(module):
|
||||||
"""Retrieve all information about a specific domain."""
|
"""Retrieve all information about a specific domain."""
|
||||||
domain = module.params["domain"]
|
domain = module.params["domain"]
|
||||||
env = get_env()
|
env = get_env(module)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return json.loads(
|
return json.loads(
|
||||||
@ -102,7 +99,7 @@ def create_domain(module):
|
|||||||
"""Create a new DNS entry."""
|
"""Create a new DNS entry."""
|
||||||
domain = module.params["domain"]
|
domain = module.params["domain"]
|
||||||
ipv4 = module.params["ipv4"]
|
ipv4 = module.params["ipv4"]
|
||||||
env = get_env()
|
env = get_env(module)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return json.loads(
|
return json.loads(
|
||||||
@ -131,7 +128,7 @@ def delete_domain(module):
|
|||||||
"""Delete an existing DNS entry."""
|
"""Delete an existing DNS entry."""
|
||||||
domain = module.params["domain"]
|
domain = module.params["domain"]
|
||||||
ipv4 = module.params["ipv4"]
|
ipv4 = module.params["ipv4"]
|
||||||
env = get_env()
|
env = get_env(module)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return json.loads(
|
return json.loads(
|
||||||
@ -177,7 +174,11 @@ def main():
|
|||||||
)
|
)
|
||||||
|
|
||||||
if not HAS_DNS_LEXICON_DEPENDENCY:
|
if not HAS_DNS_LEXICON_DEPENDENCY:
|
||||||
msg = missing_required_lib("lexicon")
|
msg = (
|
||||||
|
"Missing dns-lexicon, please run apt "
|
||||||
|
"install -y python3-lexicon or install it "
|
||||||
|
" using the Ansible `apt` module."
|
||||||
|
)
|
||||||
module.fail_json(msg=msg, exception=DNS_LEXICON_IMP_ERR)
|
module.fail_json(msg=msg, exception=DNS_LEXICON_IMP_ERR)
|
||||||
|
|
||||||
domains = retrieve_domain_info(module)
|
domains = retrieve_domain_info(module)
|
||||||
|
Reference in New Issue
Block a user