Giter Site home page Giter Site logo

puppet-dnsmasq's Introduction

DESCRIPTION

I wrote this module in need of managing bunch of servers running dnsmasq.

It features some advanced features like:

  • Basic dnsmasq management (service, installation)
  • Cross-OS support (Debian, Ubuntu, RHEL, FreeBSD)
  • Loads of options in basic config (ie TFTP) (If you need any additional option that does not supported in this module, just ping me)
  • Support for DHCP configuration.
  • Support for adding static DHCP records (MAC -> IP binding)
  • Support for adding static DNS records (IP -> hostname binding)
  • Support for DHCP options
  • Support for dnsmasq tagging system
  • And much more

DEPENDENCIES

  • puppet >= 2.6
  • puppetlabs/concat >= 1.0.0
  • puppetlabs/stdlib

BUILD STATUS

Build Status

Basic class

Will install dnsmasq to act as DNS and TFTP (if specified) server

Example basic class config. Please refer to table below to see all possible variables

class { 'dnsmasq':
  interface         => 'lo',
  listen_address    => '192.168.39.1',
  no_dhcp_interface => '192.168.49.1',
  domain            => 'int.lan',
  port              => '53',
  expand_hosts      => true,
  enable_tftp       => true,
  tftp_root         => '/var/lib/tftpboot',
  dhcp_boot         => 'pxelinux.0',
  dns_forward_max   => 1500,
  domain_needed     => true,
  bogus_priv        => true,
  no_negcache       => true,
  no_hosts          => true,
  resolv_file       => '/etc/resolv.conf',
  cache_size        => 1000,
  restart           => true,
}

Please refer to dnsmasq man page to get exact syntax and options

Core variables:

Variable Type Default Description
$auth_sec_servers string undef sec servers
$auth_server string undef Enable auth server mode
$auth_ttl string undef Override TTL value of auth server
$auth_zone string undef DNS zone for auth mode
$bogus_priv boolean true Bogus private reverse lookups
$cache_size boolean 1000 Size of dns cache
$config_hash array undef puppet config hash
$dhcp_boot bool true Enable tftp booting
$dhcp_leasefile boolean true DHCP leases file location
$dhcp_no_override boolean false Disable re-use of the DHCP servername
$domain string undef Network domain
$domain_needed boolean false Do not forward A/AAAA without domain part
$dns_forward_max string undef maximum number of concurrent DNS queries
$enable_tftp boolean undef TFTP boot support
$expand_hosts bool true Add the domain to simple names
$interface string/array undef Listening interface
$listen_address string undef Listening IP address
$local_ttl string undef Local time to live
$max_ttl string undef Maximum time to live
$max_cache_ttl string undef Maximum TTL for entries in cache
$neg_ttl string undef Negative cache timeout
$no_dhcp_interface string/array undef Do not use DHCP on interface
$no_hosts boolean false Ignore /etc/hosts file
$no_negcache boolean false Do not cache negative responses
$no_resolv boolean false Ignore resolv.conf file
$port string 53 Listening port
$read_ethers boolean false Read /etc/ethers for information about hosts
$reload_resolvconf boolean true Update resolvconf on changes
$resolv_file boolean false Location of resolv.conf file
$restart boolean true Restart on config change
$run_as_user string undef force dnsmasq under specific user
$save_config_file boolean true Backup original config file
$service_enable boolean true Start dnsmasq at boot
$service_ensure string running Ensure service state
$strict_order boolean true Use DNS servers order of resolv.conf
$tftp_root string /var/lib/tftpboot Location of tftp boot files

There is also optional variables to override system-provided paths and names:

Variable Type Desc
$dnsmasq_confdir string Configuration directory location
$dnsmasq_conffile string Configuration file location
$dnsmasq_hasstatus string init.d status support
$dnsmasq_logdir string dnsmasq log directory
$dnsmasq_package string dnsmasq package name
$dnsmasq_package_provider string package system provider
$dnsmasq_service string Name of init.d service

DHCP server configuration

Will add DHCP support to dnsmasq. This can be used multiple times to setup multiple DHCP servers. Parameter "set" is optional, this one makes use of tagging system in dnsmasq Parameter "mode" is optional, please refer to dnsmasq man to see possible settings

dnsmasq::dhcp { 'my-awesome-subnet':
  set        => 'hadoop0' #optional
  mode       => 'static' #optional
  dhcp_start => '192.168.1.100',
  dhcp_end   => '192.168.1.200',
  netmask    => '255.255.255.0',
  lease_time => '24h'
}

Static DHCP record configuration

Will add static DHCP record to DHCP server with hostname. Please be aware that example-host will also be used as DNS name.

dnsmasq::dhcpstatic { 'example-host':
  mac => 'DE:AD:BE:EF:CA:FE',
  ip  => '192.168.1.10',
}

DHCP match configuration

Will add a dhcp match. Can be used for all types of options. DHCP match will be inserted before 'DHCP option'. It can be used multiple times.

dnsmasq::dhcpmatch {'example-match':
  content: 'IPXEBOOT,175'
}

Host record configuration

Will add static A, AAAA (if provided) and PTR record

dnsmasq::hostrecord { "example-host-dns,example-host-dns.int.lan":
  ip   => '192.168.1.20',
  ipv6 => 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' #optional
}

A record configuration

Will add static A record, this record will always override upstream data

dnsmasq::address { "example-host-dns.int.lan":
  ip => '192.168.1.20',
}

CNAME records

Will add canonical name record. Please note that dnsmasq cname is NOT regular cname and can be only for targets which are names from DHCP leases or /etc/hosts, so it's more like alias for hostname

dnsmasq::cname { "mail":
  hostname => "post"
}

SRV records

Will add srv record which always overrides upstream data. Priority argument is optional.

dnsmasq::srv { "_ldap._tcp.example.com":
  hostname => "ldap-server.example.com",
  port     => "389",
  priority => "1",
}

MX records

Will create MX (mail eXchange) record which always override upstream data

dnsmasq::mx { "maildomain.com":
  hostname   => "mailserver.com",
  preference => "50",
}

PTR records

Allows you to create PTR records for rDNS and DNS-SD.

dnsmasq::ptr { "_http._tcp.dns-sd-services":
  value => '"New Employee Page._http._tcp.dns-sd-services"'
}

TXT records

Allows you to create TXT records

dnsmasq::txt { "_http._tcp.example.com":
  value => "name=value,paper=A4"
}

(this actually should be done via array, will fix later)

DHCP option configuration

Will add dhcp option. Can be used for all types of options, ie:

  • numeric ( option => '53' )
  • ipv4-option ( option => 'option:router' )
  • ipv6-option ( option => 'option6:dns-server' )

Can be used multiple times.

dnsmasq::dhcpoption { 'my-awesome-dhcp-option':
  option  => 'option:router'
  content => '192.168.1.1',
  tag     => 'sometag', #optional
}

DHCP booting (PXE)

Allows you to setup different PXE servers in different subnets. tag is optional, you can use this to specify subnet for bootserver, using tag you previously specified in dnsmasq::dhcp Can be used multiple times.

dnsmasq::dhcpboot { 'hadoop-pxe':
  tag        => 'hadoop0', #optional
  file       => 'pxelinux.0',
  hostname   => 'newoffice', #optional
  bootserver => '192.168.39.1' #optional
}

Per-subnet domain

Allows you to specify different domain for specific subnets. Can be used multiple times.

dnsmasq::domain { 'guests.company.lan':
  subnet => '192.168.196.0/24',
}

DNS server

Configure the DNS server to query external DNS servers

dnsmasq::dnsserver { 'dns':
  ip => '192.168.1.1',
}

Or, to query specific zone

dnsmasq::dnsserver { 'forward-zone':
  domain => "dumb.domain.tld",
  ip     => "192.168.39.1",
  port   => '9001', #optional
}

And using alternative syntax

dnsmasq::dnsserver { 'forward-zone-rev':
  subnet  => '192.168.196.1',
  netmask => '24',
  ip      => '192.168.39.1',
  port    => '9001', #optional
}

DNS-RR records

Allows dnsmasq to serve arbitrary records, for example:

dnsmasq::dnsrr { 'example-sshfp':
    domain => 'example.com',
    type   => '44',
    rdata  => '2:1:123456789abcdef67890123456789abcdef67890'
}

Running in Docker containers

When running in a Docker container, dnsmasq tries to drop root privileges. This causes the following error:

dnsmasq: setting capabilities failed: Operation not permitted

In this case you can use the run_as_user to provide the appropriate user to run as:

class { 'dnsmasq':
  interface         => 'lo',
  listen_address    => '192.168.39.1',
  no_dhcp_interface => '192.168.49.1',
  ....
  run_as_user       => 'root',
}

puppet-dnsmasq's People

Contributors

bwalex avatar decibelhertz avatar guimaluf avatar jcpunk avatar jpds-zz avatar kolewu avatar kronos-pbrideau avatar rabbitt avatar rclsilver avatar rlex avatar slamont avatar stephenlienharrell avatar svengerlach avatar velocity303 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

puppet-dnsmasq's Issues

Support for dns-rr parameter

dnsmasq supports a 'dns-rr' option, which allows dnsmasq to serve arbitrary records. It would be useful to expose this option. My use case for this is automatically adding SSHFP records to dnsmasq to validate server fingerprints. Something like:

dnsmasq::record { 'example-sshfp':
    hostname => 'example.com',
    type          => 44,
    rdata         => '2:1:123456789abcdef67890123456789abcdef67890'
}

should add a line like:

dns-rr=example.com,44,2:1:123456789abcdef67890123456789abcdef67890

to the configuration file.

See http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2012q2/005941.html for the discussion about this option.

hostrecord can't add AAAA records

The README states:

Host record configuration
Will add static A, AAAA and PTR record

...and then gives an example showing an IPv4 address. There doesn't actually seem to be a way of setting an IPv6 address on the same domain. For instance, I'm doing:

  dnsmasq::hostrecord { "test.example.com":
    ip  => '10.0.0.1',
  }

  dnsmasq::hostrecord { "test.example.com":
    ip  => '2a03:2880::1',
  }

But then I get:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Dnsmasq::Hostrecord[test.example.com] is already declared in file /etc/puppet/manifests/...; cannot redeclare at /etc/puppet/manifests/...:NN on node ns0

Perhaps there should just be an ip6 option for hostrecord?

Just realized that I can add just a AAAA for a domain with ::address.

resolvconf make a 'changes' every run

Whenever resolvconf is installed on a system (which is in ubuntu-minimal package), dnsmasq make an exec and give a puppet message as follow:

Notice: /Stage[main]/Dnsmasq/Exec[reload_resolvconf]/returns: executed successfully

Should it not run only if a change has occured in certain config files?

from init.pp:

exec { 'reload_resolvconf':
  provider => shell,
  command => '/sbin/resolvconf -u',
  user => root,
  onlyif => '/bin/test -f /sbin/resolvconf',
  before => Service['dnsmasq'],
}

Add mode setting to dhcp range setup

DNSMasq allows for mode option to be set up along with dhcp range, can you add this as an allowable attribute?

If static mode was set in dnsmasq.conf it would look like:
dhcp-range=set:vlan1,192.168.1.50,192.168.1.59,static,255.255.255.0,24h

We need this to force dnsmasq to only hand out statically defined addresses

the dnsmasq::dnsserver can't handle more that one dns server at time

For my use, I fixed the problem in this in the template "modules/dnsmasq/templates/dnsserver.erb", Now I can call the class in this way "dnsmasq::dnsserver { 'dns': ip => ['8.8.8.8', '8.8.4.4'] }"

Now the template looks like:

<% if @name != '' -%>
<% domain_int = "/#{@Domain}/" if @Domain -%>
<% if @ip != '' -%>
<% @ip.each { |x| -%>
<%= "server=#{domain_int}#{x}" %>
<% } -%>
<% end -%>
<% end -%>

Need option to create same option multiple times

Currently, if you try to create option option:router multiple times with different tags, it only creates the last one you specify.

For option:router, would be good if the IP of the gateway was the name and option:router was the content.

Puppet Forge packaging name incorrect

I just spotted that I do "puppet module install lex-dnsmasq" to install this module but when I do "puppet module list" it shows your module name as puppet-dnsmasq. I guess this is an issue with the packaging for Puppet Forge? ๐Ÿ˜„ It means that once installed, the module cannot be upgraded because it has a different name from what Puppet is expecting.

[jonathan@zeus modules]$ sudo puppet module list
/etc/puppet/modules
โ”œโ”€โ”€ cprice404-inifile (v0.10.4)
โ”œโ”€โ”€ puppet-dnsmasq (v1.1.0)
โ”œโ”€โ”€ puppetlabs-apt (v1.2.0)
โ”œโ”€โ”€ puppetlabs-firewall (v0.4.0)
โ”œโ”€โ”€ puppetlabs-ntp (v1.0.1)
โ”œโ”€โ”€ puppetlabs-postgresql (v2.4.0)
โ”œโ”€โ”€ puppetlabs-puppetdb (v1.5.0)
โ”œโ”€โ”€ puppetlabs-stdlib (v4.1.0)
โ”œโ”€โ”€ ripienaar-concat (v0.2.0)
โ””โ”€โ”€ thias-puppet (v0.5.3)
/usr/share/puppet/modules (no modules installed)

Multiple dnsmasq::dnsserver statements end up being re-ordered all of the time

Tested with Puppet 3.7.3 on Ruby 1.8.7 on CentOS 6.7 with a minimal wrapper recipe:

class our_dnsmasq(
  $dnsservers,
  $domain,
  $searchpath = [],
  $interface  = 'eth0',
) {
    # run locally only, try to resolve everything (via upstream)
    class { '::dnsmasq':
      interface => 'lo',
      domain    => $domain
    }

    # give explicit upstream domains / servers
    create_resources(dnsmasq::dnsserver, $dnsservers)

    file {
      # this should not be necessary, but deps are broken in lex-dnsmasq
      '/etc/dnsmasq.conf':
        ensure  => present,
        notify  => Service['dnsmasq'],
        require => Concat_File['/etc/dnsmasq.conf'];
      # inject --all-servers parameter that can't be given via config
      '/etc/init.d/dnsmasq':
        ensure  => present,
        source  => 'puppet:///modules/our_dnsmasq/dnsmasq.rc',
        mode    => '0555',
        require => Package['dnsmasq'],
        notify  => Service['dnsmasq'];
    }
     # define network interface explicitly, and disable resolv.conf rewriting
    our_network::interface {
        $interface:
          peerdns => 'no';
    }

    # configure resolv.conf explicitly
    class { '::resolv_conf':
      nameservers => ['127.0.0.1'],
      searchpath  => $searchpath,
      domainname  => $domain
    }
}

when $dnsservers = { "ns1" => "1.2.3.4", "ns2" => "4.3.2.1" }, /etc/dnsmasq.conf oscillates between

# MAIN CONFIG START
domain-needed
bogus-priv
strict-order
port=53

interface=lo
expand-hosts
domain=my.domain
cache-size=1000
conf-dir=/etc/dnsmasq.d
#MAIN CONFIG END

# EXTENDED CONFIG
# EXTENDED CONFIG END

server=1.2.3.4
server=4.3.2.1

and

# MAIN CONFIG START
domain-needed
bogus-priv
strict-order
port=53

interface=lo
expand-hosts
domain=in.here.com
cache-size=1000
conf-dir=/etc/dnsmasq.d
#MAIN CONFIG END

# EXTENDED CONFIG
# EXTENDED CONFIG END

server=4.3.2.1
server=1.2.3.4

... with dnsmasq restarts on almost every Puppet run.

(the weird dependency issue and adding --all-servers are out of scope for this moderately urgent issue)

My usecase is caching multiple high(er) latency upstream forwarders.

Do you have any advice?

// , Change wrong minimum concat version 1.0.2 to 1.2.2

// , I think the following is incorrect:

image

puppetlabs-concat-1.0.2 leads to a failure like the following:

Error: Could not set 'present' on ensure: cannot generate tempfile `/_etc_dnsmasq.conf/fragments/00_dnsmasq-header20170531-8750-xnbsnj-9' at 66:/usr/share/puppet/modules/concat/manifests/fragment.pp
Error: Could not set 'present' on ensure: cannot generate tempfile `/_etc_dnsmasq.conf/fragments/00_dnsmasq-header20170531-8750-xnbsnj-9' at 66:/usr/share/puppet/modules/concat/manifests/fragment.pp
Wrapped exception:
cannot generate tempfile `/_etc_dnsmasq.conf/fragments/00_dnsmasq-header20170531-8750-xnbsnj-9'
Error: /Stage[main]/Dnsmasq/Concat::Fragment[dnsmasq-header]/File[/_etc_dnsmasq.conf/fragments/00_dnsmasq-header]/ensure: change from absent to present failed: Could not set 'present' on ensure: cannot generate tempfile `/_etc_dnsmasq.conf/fragments/00_dnsmasq-header20170531-8750-xnbsnj-9' at 66:/usr/share/puppet/modules/concat/manifests/fragment.pp
Notice: /Stage[main]/Dnsmasq/Concat[/etc/dnsmasq.conf]/Exec[concat_/etc/dnsmasq.conf]/returns: The fragments directory is empty, cowardly refusing to make empty config files
Error: /Stage[main]/Dnsmasq/Concat[/etc/dnsmasq.conf]/Exec[concat_/etc/dnsmasq.conf]: Failed to call refresh: /var/lib/puppet/concat/bin/concatfragments.sh -o /var/lib/puppet/concat/_etc_dnsmasq.conf/fragments.concat.out -d /var/lib/puppet/concat/_etc_dnsmasq.conf     returned 1 instead of one of [0]
Error: /Stage[main]/Dnsmasq/Concat[/etc/dnsmasq.conf]/Exec[concat_/etc/dnsmasq.conf]: /var/lib/puppet/concat/bin/concatfragments.sh -o /var/lib/puppet/concat/_etc_dnsmasq.conf/fragments.concat.out -d /var/lib/puppet/concat/_etc_dnsmasq.conf     returned 1 instead of one of [0]

However, 1.2.2 seems to succeed.

Somewhere between 1.0.2 and 1.2.2 is a version of puppetlabs-concat that works, but versions lower than 1.2.2 do not offer any additional compatibility advantages, IMO.

https://forge.puppet.com/puppetlabs/concat/changelog#2015-05-12---supported-release-122

tag is reserved metaparameter and it prevents using negation in dhcp-boot

https://docs.puppetlabs.com/references/latest/metaparameter.html#tag

this prevents doing "anything but that tag, for example"

dnsmasq::dhcpboot { 'boot-ipxe':
    tag     => '!ipxe',
    file    => 'ipxe.pxe',
}
dnsmasq::dhcpboot {'boot-ipxe-conf':
    tag     => 'ipxe',
    file    => 'http://192.168.1.1/ipxe/menu.ipxe',
    #bootserver => '192.168.1.1' #optional
}

generates

Warning: tag is a metaparam; this value will inherit to all contained resources in the dnsmasq::dhcp definition
Error: Invalid tag '!ipxe' at /file/name

I believe it was broken in 5bf8632

Concat changed warn parameter to warn_header

Hi, FYI, Concat module recently changed warn parameter to warn_header, which of course causes dnsmasq module to throw up errors now.

Recommend either documenting that currently Concat should only be used up to commit aa133e24e425fee4c6460044d1ec30c25d85a430 or fixing the parameter in this module and documenting that Concat commit 51bd49fcc3773a8268e192c4c02d6a56418e4bce or later must be used

dnsmasq::dnsserver class doesn't support non-standard ports

dnsmasq supports non-standard port numbers in it's 'server' specification, like:

server=/domain/127.0.0.1#8600

Currently, this module expects only a domain/ip combination, and could benefit from either adding support for a 'port' option, or to relax its IP validation to accept ip#port specifications.

I would suggest supporting something like this :

dnsmasq::dnsserver { 'forward-zone':
domain => "dumb.domain.tld",
ip => "192.168.39.1",
port => 8600,
}

Set cache-size option for dnsmasq

Hi there,

Great module, I'm using this on a couple of servers. Just one feature it is missing - I'd like the ability to set the cache size like this:

class { 'dnsmasq':
cachesize => '1000',
}

It looks pretty easy to implement - is that something you could add?

Cheers,
Jonathan

port not being set

Hi,

I'm trying to setup a DNS zone for consul as described in a previous enhancement but the port I pass in, i.e. 8600 doesn't seem to be picked up and it defaults to the domain name which results in the the dnsmaq.conf having a bad port error.

When I tried the example in the README:

dnsmasq::dnsserver { 'forward-zone':
domain => "dumb.domain.tld",
ip => "192.168.39.1",
port => '9001', #optional
}

I get this as the result in my /etc/dnsmasq.conf:

server=/dumb.domain.tld/192.168.39.1dumb.domain.tld

I'm running CentOS 7 if that helps and I have the latest versions of concat and stdlib.

consul example

In consul, there is a custom dns server running on a custom port on localhost. All names are under the tld "consul." how would I set up forwarding just these requests to the consul dns server?

http://www.morethanseven.net/2014/04/25/consul/ (uses dnsmasq puppet module which seems poorly supported, but does what I'm looking to do.)

http://www.consul.io/docs/agent/dns.html

e.g.

$ dig @127.0.0.1 -p 8600 my-svc.service.consul SRV
...

;; ANSWER SECTION:
my-svc.service.consul.  0   IN  SRV 1 1 8076 service2.node.dc1.consul.
my-svc.service.consul.  0   IN  SRV 1 1 8045 service1.node.dc1.consul.

;; ADDITIONAL SECTION:
service2.node.dc1.consul. 0 IN  A   172.20.20.14
service1.node.dc1.consul. 0 IN  A   172.20.20.13

// , Puppet 3.6.x installation fails, Error: No such file or directory - /usr/share/puppet/modules/dnsmasq/spec/fixtures/modules/lex-dnsmasq/templates

// , The full output from this error follows:

$ sudo puppet module install --force /tmp/lex-dnsmasq-2.6.1.tar.gz --modulepath /usr/share/puppet/modules/ --ignore-dependencies
Notice: Preparing to install into /usr/share/puppet/modules ...
Notice: Installing -- do not interrupt ...
Error: No such file or directory - /usr/share/puppet/modules/dnsmasq/spec/fixtures/modules/lex-dnsmasq/templates
Error: Try 'puppet help module install' for usage

$ sudo puppet module install --force lex-dnsmasq --modulepath /usr/share/puppet/modules/
Notice: Preparing to install into /usr/share/puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
Error: No such file or directory - /usr/share/puppet/modules/dnsmasq/spec/fixtures/modules/lex-dnsmasq/templates
Error: Try 'puppet help module install' for usage

$ sudo puppet module install --force lex-dnsmasq --version 2.6.1 --modulepath /usr/share/puppet/modules/
Notice: Preparing to install into /usr/share/puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
Error: No such file or directory - /usr/share/puppet/modules/dnsmasq/spec/fixtures/modules/lex-dnsmasq/templates
Error: Try 'puppet help module install' for usage

It looks like some symlinks with relative paths in /usr/share/puppet/modules/dnsmasq/spec/fixtures/modules/lex-dnsmasq/templates are the culprit:

$ ls -la
total 8
drwxr-xr-x 2 puppet puppet 4096 May 31 00:35 .
drwxr-xr-x 3 puppet puppet 4096 May 31 00:35 ..
lrwxrwxrwx 1 root   root     21 May 31 00:35 manifests -> ../../../../manifests
lrwxrwxrwx 1 root   root     21 May 31 00:35 templates -> ../../../../templates

Does puppet module install check for these before they are created or installed?

Should I be extracting this .tar.gz file manually instead of using puppet module install?

Please advise if there is anything else I can do to show more about what is happening here.

Puppet 8x compatibility

Hi,
Is it possible to create a new tag with Puppet 8x compatibility ?

For example :

Evaluation Error: Unknown variable: '::osfamily'.

Thanks.

help needed: documentation

Ok, if anyone reads this, i need your help with my readme. I have some problems with english (it's not my native language at all), so it will be a great help if you can fork my project and cleanup my grammar / punctuation / etc.

Symlinks in modules are unsupported.

The following warning is presented when initially installing the module:

puppet module install -i /etc/puppet/environments/test/modules lex/dnsmasq
Notice: Preparing to install into /etc/puppet/environments/test/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Warning: Symlinks in modules are unsupported. Please investigate symlink lex-dnsmasq-2.6.1/spec/fixtures/modules/lex-dnsmasq/templates->../../../../templates.
Warning: Symlinks in modules are unsupported. Please investigate symlink lex-dnsmasq-2.6.1/spec/fixtures/modules/lex-dnsmasq/manifests->../../../../manifests.

Notice: Installing -- do not interrupt ...
/etc/puppet/environments/test/modules
โ””โ”€โ”ฌ lex-dnsmasq (v2.6.1)
โ”œโ”€โ”€ puppetlabs-concat (v1.2.4)
โ””โ”€โ”€ puppetlabs-stdlib (v4.9.0)

File[/etc/dnsmasq.conf] not in catalog

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid relationship: Exec[save_config_file] { before => File[/etc/dnsmasq.conf] }, because File[/etc/dnsmasq.conf] doesn't seem to be in the catalog

This was on a fresh install. dnsmasq had not been installed. Short term solution was to comment out the before line.

Could it be related to what I saw in the output once I commented the before line out.
Notice: /Stage[main]/Dnsmasq/Concat[/etc/dnsmasq.conf]/File[/etc/dnsmasq.conf]/content

I'm not really well enough versed in how this works to fix this. But I hope this is enough information.

Release new version to Forge?

Deprecation warnings are already resolved in HEAD, but not in the latest Forge release (2.4.0). Can you release a new version to the Puppet Forge? Thanks!

Invalid variable dnsmasq_confdir at Redhat family

There is an issue at the dnsmasq::params related to $dnsmasq_confdir. The variable has an extra 'd' that creates an issue (non usable) at RedHat based OS:

Original:
$dnsmasq_confddir = '/etc/dnsmasq.d'

No License Found

There's no license on this module. According to the laws of many countries that means this defaults back to being owned by you with no permission for others to use.

Any chance you'd mind open sourcing this?

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.