Go to file
2014-10-05 20:19:33 +02:00
defaults Remove unneeded comments from role defaults 2014-08-31 14:21:56 +02:00
handlers ginas project is renamed to DebOps project 2014-08-26 23:36:08 +02:00
meta Convert README template to .rst 2014-10-05 18:20:40 +02:00
tasks ginas project is renamed to DebOps project 2014-08-26 23:36:08 +02:00
templates/etc ginas project is renamed to DebOps project 2014-08-26 23:36:08 +02:00
.travis.yml Update .travis.yml with new version 2014-09-24 19:09:01 +02:00
LICENSE Add LICENSE file in all roles 2014-08-31 18:42:25 +02:00
README.rst Replace Markdown README with reStructuredText README 2014-10-05 20:19:33 +02:00

|DebOps| dhcpd
##############

.. |DebOps| image:: http://debops.org/images/debops-small.png
   :target: http://debops.org

|Travis CI| |test-suite| |Ansible Galaxy|

.. |Travis CI| image:: http://img.shields.io/travis/debops/ansible-dhcpd.svg?style=flat
   :target: http://travis-ci.org/debops/ansible-dhcpd

.. |test-suite| image:: http://img.shields.io/badge/test--suite-ansible--dhcpd-blue.svg?style=flat
   :target: https://github.com/debops/test-suite/tree/master/ansible-dhcpd/

.. |Ansible Galaxy| image:: http://img.shields.io/badge/galaxy-debops.dhcpd-660198.svg?style=flat
   :target: https://galaxy.ansible.com/list#/roles/1559



Install and configure `ISC DHCP Server`_.

.. _ISC DHCP Server: https://www.isc.org/downloads/dhcp/

Installation
~~~~~~~~~~~~

This role requires at least Ansible ``v1.7.0``. To install it, run:

::

    ansible-galaxy install debops.dhcpd

Are you using this as a standalone role without DebOps?
=======================================================

You may need to include missing roles from the `DebOps common playbook`_
into your playbook.

`Try DebOps now`_ for a complete solution to run your Debian-based infrastructure.

.. _DebOps common playbook: https://github.com/debops/debops-playbooks/blob/master/playbooks/common.yml
.. _Try DebOps now: https://github.com/debops/debops/




Role variables
~~~~~~~~~~~~~~

List of default variables available in the inventory:

::

    ---
    
    # ---- Global ISC DHCP Server configuration ----
    
    # Is this DHCP server authoritative?
    dhcpd_authoritative: False
    
    # List of network interfaces to listen on for DHCP requests
    # If this list is empty, Ansible will try to guess correct interfaces
    # automatically
    dhcpd_interfaces: []
    
    # Default domain to use
    dhcpd_domain: '{{ ansible_domain }}'
    
    # List of default DNS servers. By default, point users to the same host that
    # serves them DHCP requests, on default interface. If this host is a router,
    # you might need to set DNS server to internal interface IP address.
    dhcpd_dns_servers: [ '{{ ansible_default_ipv4.address }}' ]
    
    # Max lease time in hours (default lease time is calculated below)
    dhcpd_lease_time: 24
    
    # Default global options formatted as a text block
    dhcpd_global_options: |
      option domain-name "{{ ansible_domain }}";
      option domain-name-servers {{ dhcpd_dns_servers | join(' ') }};
      default-lease-time {{ (((dhcpd_lease_time / 2) + 6) * 60 * 60)|round|int }};
      max-lease-time {{ (dhcpd_lease_time * 60 * 60)|round|int }};
      log-facility local7;
    
    # Custom options formatted as a text block
    dhcpd_options: False
    
    
    # ---- ISC DHCP Server configuration scopes ----
    
    # These lists allow you to generate nested configuration scopes in
    # dhcpd.conf. Most of the information about them can be found in dhcpd.conf(5)
    # manual page. You can create nested configuration using Ansible variable
    # expansion (examples below).
    
    # List of general configuration parameters (work in any configuration scope):
    #  - comment: ''            add a comment to a scope
    #  - options: |             custom options for that scope defined as a text block
    #  - include: ''            path to external file to include in this scope
    
    # List of hosts (works in groups, subnets):
    #  - hosts: '' or []        list of hosts to configure in that scope; if this is
    #                           a path to a file, dhcpd will include an external file
    #                           in this scope
    
    # List of parameters specific to dhcpd_classes:
    #  - class: ''              class name
    #  - subclass:              this is a hash with expression as key and additional
    #                           options as value in a text block (see example below);
    #                           each match expression must end with a colon to indicate
    #                           hash key; optional
    
    # List of parameters specific to dhcpd_groups:
    #  - subnets: []            list of subnet scopes to group together
    #  - groups: []             list of other group scopes to include. No recursion!
    
    # List of parameters specific to dhcpd_shared_networks:
    #  - name: ''               name of shared network
    #  - subnets: []            list of subnets in a shared network (do not use
    #                           dhcpd_subnets here, because they will be duplicated
    #                           and DHCP server will not start)
    
    # List of parameters specific to dhcpd_subnets:
    #  - subnet: ''             start of a subnet range (ie.: 192.168.1.0)
    #  - netmask: ''            netmask for this subnet (ie.: 255.255.255.0)
    #  - routers: '' or []      address or list of addresses of gateway for that
    #                           subnet (ie.: 192.168.1.1)
    
    # List of parameters specific to dhcpd_hosts:
    #  - hostname: ''           hostname, without domain part
    #  - address: ''            IP address reserved for that host, optional
    #  - ethernet: ''           Ethernet MAC address of this host, optional
    
    
    # List of classes
    dhcpd_classes: []
      #- class 'example-class'
      #  subclass:
      #    'match1':
      #    'match2': |
      #      # match2 options in a text block;
    
      #- class 'example-empty-class'
    
    
    # List of groups
    dhcpd_groups: []
      #- comment: 'First group'
      #  hosts: '/etc/dhcp/dhcpd-group1-hosts.conf'
      #  groups: '{{ dhcpd_group_second }}'
    
    # An example of group nesting
    #dhcpd_group_second:
    #  - comment: 'Second group'
    #    hosts: '/etc/dhcp/dhcpd-group2-hosts.conf'
    
    
    # List of shared networks
    dhcpd_shared_networks: []
      #- name: 'shared-net'
      #  comment: "Local shared network"
      #  subnets: '{{ dhcpd_subnets_local }}'
      #  options: |
      #    default-lease-time 600;
      #    max-lease-time 900;
    
    
    # List of subnets not in a shared network
    dhcpd_subnets:
      - subnet: '{{ ansible_default_ipv4.network }}'
        netmask: '{{ ansible_default_ipv4.netmask }}'
        comment: 'Generated automatically by Ansible'
    
      #- subnet: 'dead:be:ef::/64'
      #  ipv6: True
      #  routers: '10.0.10.1'
      #  comment: "Example IPv6 subnet"
      #  options: |
      #    default-lease-time 300;
      #    max-lease-time 7200;
      #
      #- subnet: '10.0.20.0'
      #  netmask: '255.255.255.0'
      #  comment: 'Ignored subnet'
    
    # An example subnets included in a shared network
    #dhcpd_subnets_local:
    #  - subnet: '10.0.30.0'
    #    netmask: '255.255.255.0'
    #    routers: [ '10.0.30.1', '10.0.30.2' ]
    #
    #  - subnet: '10.0.40.0'
    #    netmask: '255.255.255.0'
    #    routers: '19.0.40.1'
    #    options: |
    #      default-lease-time 300;
    #      max-lease-time 7200;
    #    pools:
    #      - comment: "A pool in a subnet"
    #        range: '10.0.30.10 10.0.30.20'
    
    
    # Global list of hosts in DHCP
    dhcpd_hosts: []
    #  - hostname: 'examplehost'
    #    address: '10.0.10.1'
    #    ethernet: '00:00:00:00:00:00'
    
    # Example global list of hosts read from an external file
    #dhcpd_hosts: '/etc/dhcp/dhcpd.hosts.conf'
    
    
    # List of external files to include
    dhcpd_includes: []
      #- '/etc/dhcp/example.conf'




Authors and license
~~~~~~~~~~~~~~~~~~~

``dhcpd`` role was written by:

- Maciej Delmanowski | `e-mail <mailto:drybjed@gmail.com>`_ | `Twitter <https://twitter.com/drybjed>`_ | `GitHub <https://github.com/drybjed>`_

License: `GPLv3 <https://tldrlegal.com/license/gnu-general-public-license-v3-%28gpl-3%29>`_

****

This role is part of the `DebOps`_ project. README generated by `ansigenome`_.

.. _DebOps: http://debops.org/
.. _Ansigenome: https://github.com/nickjj/ansigenome/