Coder Social home page Coder Social logo

pdns_recursor-ansible's Introduction

PowerDNS Recursor Role

An Ansible role created by the folks behind PowerDNS to install and configure the PowerDNS Recursor.

Requirements

An Ansible 2.0 or higher installation.

Dependencies

This role depends on atosatto.packages-extras. See the requirements.yml file for further details.

Role Variables

Available variables are listed below, along with default values (see defaults/main.yml):

pdns_rec_install_repo: "" 

By default the PowerDNS Recursor is installed from the os default repositories. You can install the PowerDNS Recursor package from official PowerDNS repository overriding the pdns_rec_install_repo variable value as follows:

# Install the PowerDNS Recursor from the 'master' branch
- hosts: pdns-recursors
  roles:
  - { role: PowerDNS.pdns_recursor,
      pdns_rec_install_repo: "{{ pdns_rec_powerdns_repo_master }}" }

# Install the PowerDNS Recursor from the '40' branch
- hosts: pdns-recursors
  roles:
  - { role: PowerDNS.pdns_recursor,
      pdns_rec_install_repo: "{{ pdns_rec_powerdns_repo_40 }}" }

The roles also supports custom repositories

- hosts: all
  vars:
    pdns_rec_install_repo:
      apt_repo_origin: "my.repo.com"  # used to pin the pdns-recursor to the provided PowerDNS repository
      apt_repo: "deb http://my.repo.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns-recursor main"
      gpg_key: "http://my.repo.com/MYREPOGPGPUBKEY.asc" # repository public GPG key
      gpg_key_id: "MYREPOGPGPUBKEYID" # to avoid to reimport the key each time the role is executed
      yum_repo_baseurl: "http://my.repo.com/centos/$basearch/$releasever/pdns-recursor"
      yum_repo_name: "powerdns-rec"   # used to select only the pdns-recursor packages coming from this repo
  roles:
  - { role: PowerDNS.pdns_recursor }

If targeting only a specific platform (e.g. Debian) it's not needed to provide other platform (e.g. yum) repositories informations.

pdns_rec_install_epel: True

By default the role installs also the EPEL repository. EPEL is needed to satisfy some PowerDNS Recursor dependencies like protobuf. If these dependencies are included into other repositories already configured in the host or in the custom pdns_rec_install_epel, override this variable to False to skip EPEL installation.

pdns_rec_user: pdns   # pdns-recursor on CentOS/RHEL
pdns_rec_group: pdns  # pdns-recursor on CentOS/RHEL

The user and group the PowerDNS Recursor will run as. NOTE: This role does not create any user or group as we assume that they're created by the package or other roles.

pdns_rec_service_name: "pdns-recursor"

The name of the PowerDNS Recursor service.

pdns_rec_flush_handlers: False

Force the execution of the flushing of the handlers at the end of the role. NOTE: This is required if using this role to configure multiple recursor instances in a single play to make sure that on configuration changes the correct pnds_recursor instance is restarted.

pdns_rec_config_dir: "/etc/powerdns"
pdns_rec_config_file: "recursor.conf"
pdns_rec_config_lua: "{{ pdns_rec_config_dir }}/config.lua"
pdns_rec_config_dns_script: "{{ pdns_rec_config_dir }}/dns-script.lua"

The PowerDNS Recursor configuration files and directories.

pdns_rec_config: { }

A dict containing in YAML format the custom configuration of PowerDNS Recursor. NOTE: You should not set the config-dir, set-uid and set-gid because are set by other role variables (respectively pdns_rec_config_dir, pdns_rec_user, pdns_rec_group).

# pdns_rec_lua_config_file_content: ""

String containing the content of the lua-config-file file. This will create a file called config.lua into the pdns_rec_config_dir and add the configuration to the recursor.conf configuration file.

# pdns_rec_lua_dns_script_content: ""

String containing the content of the lua-dns-script file. This will create a file called dns-script.lua into the pdns_rec_config_dir and add the configuration to load this script to the recursor.conf configuration file.

Example Playbook

Here we show some examples of usage of the PowerDNS.pdns_recursor role.

Bind to 203.0.113.53 on port 5300 and allow only traffic from the 198.51.100.0/24 subnet:

- hosts: pdns-recursors
  vars:
    pdns_rec_config:
      'allow-from': '198.51.100.0/24'
      'local-address': '203.0.113.53:5300'
  roles:
    - { role: PowerDNS.pdns_recursor }

Allow from multiple networks:

- hosts: pdns-recursors
  vars:
    pdns_rec_config:
      'allow-from':
        - '198.51.100.0/24'
        - '203.0.113.53/24'
      'local-address': '203.0.113.53:5300'
  roles:
    - { role: PowerDNS.pdns_recursor }

License

MIT

pdns_recursor-ansible's People

Contributors

atosatto avatar clwells avatar habbie avatar pieterlexis avatar tiawaz avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.