README
author Tero Marttila <tero.marttila@aalto.fi>
Tue, 24 Feb 2015 19:24:36 +0200
changeset 452 d10f2b2188bb
parent 448 5ab0ec8200c3
child 480 7e44854e85d4
permissions -rw-r--r--
README etc/hosts/test with ethernet and pvl.hosts-dhcp output
438
d45fc43c6073 split out pvl-hosts from pvl-verkko
Tero Marttila <tero.marttila@aalto.fi>
parents: 34
diff changeset
     1
= pvl-hosts =
34
491f7da9d29b pvl.verkko-dhcp: fix polling without syslog; README
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
443
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     3
DNS/DHCP hosts management/integration for ISC bind9 and dhcpd.
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     4
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     5
Also includes network SNMP discovery.
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     6
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     7
== Hosts ==
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     8
The `pvl.hosts-* etc/hosts/test` tools read hosts files as input, which have an ini format, using section names as hostnames to configure attributes for that host:
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
     9
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    10
    [foo]
452
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    11
        ip          = 127.0.0.1
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    12
        ethernet    = 00:11:22:33:44:55
443
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    13
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    14
    [bar]
452
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    15
        ip          = 127.0.0.2
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    16
        ethernet    = 01:23:45:67:89:ab
443
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    17
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    18
The default mechanism uses the basename of the given config file as the domain name, so this example file would generate something like the following output for use in a `zone "test" { ... }` zonefile:
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    19
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    20
    $ pvl.hosts-dns --forward-zone=test etc/hosts/test
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    21
    foo                               A     127.0.0.1
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    22
    bar                               A     127.0.0.2
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    23
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    24
And correspondingly, the reverse zone for 127.0.0.0/8:
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    25
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    26
    $ pvl.hosts-dns --reverse-zone=127 etc/hosts/test
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    27
    1.0.0                             PTR   foo.test.
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    28
    2.0.0                             PTR   bar.test.
Tero Marttila <tero.marttila@aalto.fi>
parents: 438
diff changeset
    29
452
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    30
And the associated DHCP hosts:
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    31
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    32
    $ bin/pvl.hosts-dhcp etc/hosts/test
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    33
    host foo {
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    34
            option host-name               "foo";
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    35
            hardware ethernet              00:11:22:33:44:55;
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    36
            fixed-address                  127.0.0.1;
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    37
    }
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    38
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    39
    host bar {
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    40
            option host-name               "bar";
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    41
            hardware ethernet              01:23:45:67:89:ab;
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    42
            fixed-address                  127.0.0.2;
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    43
    }
d10f2b2188bb README etc/hosts/test with ethernet and pvl.hosts-dhcp output
Tero Marttila <tero.marttila@aalto.fi>
parents: 448
diff changeset
    44
447
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    45
=== Generated hosts ===
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    46
The hosts file format supports something similar to bind9's $GENERATE directive for hosts:
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    47
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    48
    [asdf{1-3}]
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    49
        ip  = 10.100.100.$
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    50
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    51
    $ bin/pvl.hosts-dns --forward-zone=asdf etc/hosts/asdf 
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    52
    asdf1@asdf                        A     10.100.100.1
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    53
    asdf2@asdf                        A     10.100.100.2
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    54
    asdf3@asdf                        A     10.100.100.3
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    55
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    56
Note that the generate directives are interpreted and compiled directly by pvl.hosts. 
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    57
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    58
Most of the $GENERATE options should be supported, with a little clever hackery:
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    59
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    60
    [asdf{1-5/2}{0,2}]
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    61
       ip  = 10.100.100.$${10}
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    62
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    63
    $ bin/pvl.hosts-dns --forward-zone=asdf2 etc/hosts/asdf2
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    64
    asdf01@asdf2                      A     10.100.100.11
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    65
    asdf03@asdf2                      A     10.100.100.13
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    66
    asdf05@asdf2                      A     10.100.100.15
6f0357759e9b pvl.hosts: fixup and document host expansion
Tero Marttila <tero.marttila@aalto.fi>
parents: 443
diff changeset
    67
448
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    68
This feature can be used for generating reverse delegations:
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    69
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    70
    [foo-{240-247}]
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    71
        forward =
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    72
        reverse = $.240/29.0.0.10.in-addr.arpa
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    73
        ip      = 10.0.0.$
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    74
    
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    75
    $ bin/pvl.hosts-dns --reverse-zone=10 etc/hosts/reverse 
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    76
    240.0.0                           CNAME 240.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    77
    241.0.0                           CNAME 241.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    78
    242.0.0                           CNAME 242.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    79
    243.0.0                           CNAME 243.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    80
    244.0.0                           CNAME 244.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    81
    245.0.0                           CNAME 245.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    82
    246.0.0                           CNAME 246.240/29.0.0.10.in-addr.arpa.
5ab0ec8200c3 README reverse delegation example
Tero Marttila <tero.marttila@aalto.fi>
parents: 447
diff changeset
    83
    247.0.0                           CNAME 247.240/29.0.0.10.in-addr.arpa.