robertdebock.dns

Rol de Ansible dns

Instala y configura dns en tu sistema.

GitHub GitLab Descargas Versión
github gitlab downloads Version

Ejemplo de Playbook

Este ejemplo se toma de molecule/default/converge.yml y se prueba en cada push, pull request y lanzamiento.

---
- name: Convergir
  hosts: todos
  become: true
  gather_facts: true

  roles:
    - role: robertdebock.dns
      dns_allow_transfer:
        - none
        - "127.0.0.1"
      dns_zones:
        - name: localhost
          type: primary
          soa: localhost
          serial: 1
          refresh: 604800
          retry: 86400
          expire: 2419200
          ttl: 604800
          records:
            - name: "@"
              type: NS
              value: localhost.
            - name: "@"
              value: "127.0.0.1"
            - name: "@"
              type: AAAA
              value: "::1"
        - name: "127.in-addr.arpa"
          ttl: 604800
          type: primary
          records:
            - name: "@"
              type: NS
              value: localhost.
            - name: "1.0.0"
              type: PTR
              value: localhost.
        - name: "0.in-addr.arpa"
          type: primary
          records:
            - name: "@"
              type: NS
              value: localhost.

        - name: "255.in-addr.arpa"
          type: primary
          records:
            - name: "@"
              type: NS
              value: localhost.
        - name: example.com
          type: primary
          ttl: 604800
          ns:
            - name: dns1.example.com.
            - name: dns2.example.com.
          mx:
            - name: mail1.example.com.
              priority: 10
            - name: mail2.example.com.
              priority: 20
          records:
            - name: dns1
              value: "127.0.0.1"
            - name: dns2
              value: "127.0.0.1"
            - name: www
              value: "127.0.0.1"
            - name: dns1
              value: "127.0.0.1"
            - name: dns2
              value: "127.0.0.1"
            - name: mail1
              value: "127.0.0.1"
            - name: mail2
              value: "127.0.0.1"
        - name: forwarded.example.com
          type: forward
          forwarders:
            - "1.1.1.1"
            - "8.8.8.8"
        - name: secondary.example.com
          type: secondary
          primaries:
            - "127.0.0.1"
            - "127.0.0.2"
        - name: lab.controlplane.info
          type: primary
          ttl: 600
          ns:
            - name: ns.lab.controlplane.info.
          mx:
            - name: mail1.lab.controlplane.info.
              priority: 10
            - name: mail2.lab.controlplane.info.
              priority: 20
          records:
            - name: ns
              value: "192.168.254.27"
            - name: git
              value: "192.168.254.19"
            - name: dl380
              value: "192.168.254.27"
            - name: mail1
              value: "192.168.123.123"
            - name: mail2
              value: "192.168.123.123"
        - name: forwarded.lab.controlplane.info
          type: forward
          ns:
            - name: forwarded.lab.controlplane.info.
          records:
            - name: ns
              value: "192.168.254.27"
            - name: "@"
              value: "192.168.123.123"
          forwarders:
            - "9.9.9.9"
            - "8.8.8.8"

La máquina necesita estar preparada. En CI esto se hace usando molecule/default/prepare.yml:

---
- name: Preparar
  hosts: todos
  become: true
  gather_facts: false

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.core_dependencies

También puedes ver una explicación completa y un ejemplo sobre cómo usar estos roles.

Variables del Rol

Los valores predeterminados de las variables están establecidos en defaults/main.yml:

---
# archivo de valores predeterminados para dns

# El puerto en el que escuchar.
dns_port: 53

# ¿Debería el servidor DNS ser un servidor DNS de almacenamiento en caché?
dns_caching_dns: true

# Una lista de zonas y propiedades por zona.
dns_zones:
  - name: localhost
    type: primary
    soa: localhost
    serial: 1
    refresh: 604800
    retry: 86400
    expire: 2419200
    ttl: 604800
    records:
      - name: "@"
        type: NS
        value: localhost.
      - name: "@"
        value: "127.0.0.1"
      - name: "@"
        type: AAAA
        value: "::1"
  - name: "127.in-addr.arpa"
    ttl: 604800
    type: primary
    records:
      - name: "@"
        type: NS
        value: localhost.
      - name: "1.0.0"
        type: PTR
        value: localhost.
  - name: "0.in-addr.arpa"
    type: primary
    records:
      - name: "@"
        type: NS
        value: localhost.
  - name: "255.in-addr.arpa"
    type: primary
    records:
      - name: "@"
        type: NS
        value: localhost.

# Una lista opcional de acls para permitir la recursión. ("any" y "none" siempre están disponibles.)
dns_allow_recursion:
  - none

# Una lista opcional de IPv4 en la que escuchará el servidor DNS. ("any" y "none" siempre están disponibles.)
dns_listen_on:
  - any

# Una lista opcional de IPv6 en la que escuchará el servidor DNS. ("any" y "none" siempre están disponibles.)
dns_listen_on_v6:
  - any

# Una lista opcional de IP que están permitidas para consultar al servidor. ("any" y "none" siempre están disponibles.)
# Por defecto: "any"
# dns_allow_query:
#  - any
#  - "127.0.0.1"

# Una lista opcional de IP que están permitidas para ejecutar una consulta AXFR. ("any" y "none" siempre están disponibles.)
# Por defecto: "none"
# dns_allow_transfer:
#   - none
#   - "172.16.0.1"

# Una configuración opcional para configurar la ruta donde se creará el archivo pid.
dns_pid_file: /run/named/named.pid

# Una configuración opcional para reenvíar tráfico a otros servidores DNS.
# dns_forwarders:
#   - "1.1.1.1"
#   - "8.8.8.8"

Requisitos

Estado de los roles usados

Los siguientes roles se utilizan para preparar un sistema. Puedes preparar tu sistema de otra manera.

Requisito GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.core_dependencies Build Status GitHub Build Status GitLab

Contexto

Este rol es parte de muchos roles compatibles. Consulta la documentación de estos roles para obtener más información.

Aquí hay un resumen de roles relacionados: dependencias

Compatibilidad

Este rol se ha probado en estas imágenes de contenedor:

contenedor etiquetas
Alpine todas
Amazon Candidato
EL 9
Debian todas
Fedora todas
Ubuntu todas

La versión mínima de Ansible requerida es 2.12, las pruebas se han realizado en:

  • La versión anterior.
  • La versión actual.
  • La versión de desarrollo.

Si encuentras problemas, por favor regístralos en GitHub.

Licencia

Apache-2.0.

Información del Autor

robertdebock

Por favor considera patrocinarme.

Acerca del proyecto

Install and configure dns on your system.

Instalar
ansible-galaxy install robertdebock.dns
Licencia
apache-2.0
Descargas
1.2k
Propietario
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.