There are many ways to configure name resolution. A simple and straightforward approach is to implement this as a simple editing promise for the /etc/resolv.conf file.
```cf3
body common control { bundlesequence => { “edit_name_resolution” }; }
bundle agent edit_name_resolution {
files:
“/tmp/resolv.conf” # This is for testing, change to “$(sys.resolv)” to put in production
comment => "Add lines to the resolver configuration",
create => "true", # Make sure the file exists, create it if not
edit_line => resolver, # Call the resolver bundle defined below to do the editing
edit_defaults => empty; # Baseline memory model of file to empty before processing
# bundle edit_line resolver }
bundle edit_line resolver {
insert_lines:
any:: # Class/context where you use the below nameservers. Change to appropriate class # for your system (if not any::, for example server_group::, ubuntu::, etc.)
# insert the search domain or name servers we want “search mydomain.tld” location => start; # Replace mydomain.tld with your domain name # The search line will always be at the start of the file “nameserver 128.39.89.8”; “nameserver 128.39.74.66”; }
body edit_defaults empty { empty_file_before_editing => “true”; }
body location start { before_after => “before”; } ```
Example run:
# cf-agent -f unit_edit_name_resolution.cf # set up resolv.conf
# cat /tmp/resolv.conf # show resolv.conf
search mydomain.tld
nameserver 128.39.89.8
nameserver 128.39.74.66
# echo 'nameserver 0.0.0.0' >> /tmp/resolv.conf # mess up resolv.conf
# cf-agent -f ./unit_edit_name_resolution.cf -KI # heal resolv.conf
2013-06-08T18:38:12-0700 info: This agent is bootstrapped to '192.168.183.208'
2013-06-08T18:38:12-0700 info: Running full policy integrity checks
2013-06-08T18:38:12-0700 info: /edit_name_resolution/files/'/tmp/resolv.conf': Edit file '/tmp/resolv.conf'
# cat /tmp/resolv.conf # show healed resolv.conf
search mydomain.tld
nameserver 128.39.89.8
nameserver 128.39.74.66
#