From 5e7514d755ce4fb59ebf02e7f933ba639d85f42f Mon Sep 17 00:00:00 2001 From: Tomoyuki Sakurai Date: Tue, 1 Nov 2016 14:52:30 +0900 Subject: [PATCH 1/2] support ubuntu fixes #4 --- .kitchen.yml | 5 +++++ meta/main.yml | 6 +++--- tasks/configure-Debian.yml | 27 +++++++++++++++++++++++++++ tests/serverspec/default_spec.rb | 7 +++++++ tests/serverspec/fixed_ip_spec.rb | 2 ++ 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 tasks/configure-Debian.yml diff --git a/.kitchen.yml b/.kitchen.yml index 2786a0c..11fe868 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -48,6 +48,11 @@ platforms: box: trombik/ansible-centos-7.2-x86_64 box_check_update: false + - name: ubuntu-14.04-amd64 + driver: + box: trombik/ansible-ubuntu-14.04-amd64 + box_check_update: false + suites: - name: default provisioner: diff --git a/meta/main.yml b/meta/main.yml index 1e25030..61d0905 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -13,9 +13,9 @@ galaxy_info: - name: OpenBSD versions: - 6.0 -# - name: Ubuntu -# versions: -# - trusty + - name: Ubuntu + versions: + - trusty - name: EL versions: - 7 diff --git a/tasks/configure-Debian.yml b/tasks/configure-Debian.yml new file mode 100644 index 0000000..becf1dc --- /dev/null +++ b/tasks/configure-Debian.yml @@ -0,0 +1,27 @@ +--- + +- name: Append supersede domain-name-servers to /etc/dhcp/dhclient.conf + lineinfile: + dest: /etc/dhcp/dhclient.conf + regexp: "^supersede\\s+domain-name-servers\\s+(?!{{ resolver_nameservers | predictable_shuffle(ansible_fqdn) | join(',') }});" + state: absent + when: "{{ resolver_dhclient_enabled }}" + +- name: Append supersede domain-name-servers to /etc/dhcp/dhclient.conf + lineinfile: + dest: /etc/dhcp/dhclient.conf + line: "supersede domain-name-servers {{ resolver_nameservers | predictable_shuffle(ansible_fqdn) | join(',') }};" + register: register_dhclient_conf + when: "{{ resolver_dhclient_enabled }}" + +- name: Restart network + service: + name: networking + state: restarted + when: register_dhclient_conf.changed + + +- name: Create resolv.conf + template: + src: resolv.conf.j2 + dest: /etc/resolv.conf diff --git a/tests/serverspec/default_spec.rb b/tests/serverspec/default_spec.rb index ad9bbd8..c8daa83 100644 --- a/tests/serverspec/default_spec.rb +++ b/tests/serverspec/default_spec.rb @@ -10,14 +10,21 @@ its(:content) { should match /PEERDNS=no/ } its(:content) { should_not match /PEERDNS=yes/ } end +when 'ubuntu' + describe file('/etc/dhcp/dhclient.conf') do + its(:content) { should match /^supersede domain-name-servers 192\.168\.1\.3,192\.168\.1\.2,192\.168\.1\.1;/ } + end end describe file('/etc/resolv.conf') do + its(:content) { should_not match /nameserver\s+#{ Regexp.escape('10.0.2.3') }/ } case host_inventory['fqdn'] when 'default-freebsd-103-amd64' its(:content) { should match /nameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.3\nnameserver 192\.168\.1\.1/ } when 'default-openbsd-60-amd64' its(:content) { should match /nameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.1\nnameserver 192\.168\.1\.3/ } + when 'default-ubuntu-1404-amd64' + its(:content) { should match /nameserver 192\.168\.1\.3\nnameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.1/ } else its(:content) { should match /nameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.3\nnameserver 192\.168\.1\.1/ } end diff --git a/tests/serverspec/fixed_ip_spec.rb b/tests/serverspec/fixed_ip_spec.rb index 329f032..9009406 100644 --- a/tests/serverspec/fixed_ip_spec.rb +++ b/tests/serverspec/fixed_ip_spec.rb @@ -8,6 +8,8 @@ its(:content) { should match /nameserver 192\.168\.1\.1\nnameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.3/ } when 'fixed-ip-centos-72-x86-64' its(:content) { should match /nameserver 192\.168\.1\.3\nnameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.1/ } + when 'fixed-ip-ubuntu-1404-amd64' + its(:content) { should match /nameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.1\nnameserver 192\.168\.1\.3/ } else its(:content) { should match /nameserver 192\.168\.1\.2\nnameserver 192\.168\.1\.3\nnameserver 192\.168\.1\.1/ } end From 9b45d772b5e74e5f6a24aa200966115e16da3b7c Mon Sep 17 00:00:00 2001 From: Tomoyuki Sakurai Date: Tue, 1 Nov 2016 15:13:35 +0900 Subject: [PATCH 2/2] do not include nameserver given by DHCP server fixes build --- README.md | 23 ++++++++++++++++++++--- tasks/configure-FreeBSD.yml | 21 +++++++++++++++++++++ tests/serverspec/default.yml | 2 +- tests/serverspec/default_spec.rb | 4 ++++ 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 69d0112..d5645a8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ # ansible-role-resolver -A brief description of the role goes here. +Configures `/etc/resolv.conf`. + +## Notes + +This role modifies `/etc/dhclient.conf`. If you manage `/etc/dhclient.conf` +with `ansible`, the role might break your configuration. # Requirements @@ -12,7 +17,7 @@ None |----------|-------------|---------| | resolver\_nameservers | a list of resolvers | [] | | resolver\_dhclient\_enabled | whether dhclient is enabled | false | -| resolver\_dhclient\_interface | the interface dhclient is enabled (CentOS only) | "" | +| resolver\_dhclient\_interface | the interface dhclient is enabled (CentOS and FreeBSD only) | "" | # Dependencies @@ -20,10 +25,22 @@ None # Example Playbook +```yaml +- hosts: localhost + roles: + - ansible-role-resolver + vars: + resolver_dhclient_enabled: true + resolver_nameservers: + - 192.168.1.1 + - 192.168.1.2 + - 192.168.1.3 + resolver_dhclient_interface: "{% if ansible_os_family == 'RedHat' %}eth0{% elif ansible_os_family == 'FreeBSD' %}em0{% endif %}" +``` # License -```yaml +``` Copyright (c) 2016 Tomoyuki Sakurai Permission to use, copy, modify, and distribute this software for any diff --git a/tasks/configure-FreeBSD.yml b/tasks/configure-FreeBSD.yml index b63bf1d..469c76b 100644 --- a/tasks/configure-FreeBSD.yml +++ b/tasks/configure-FreeBSD.yml @@ -1,6 +1,27 @@ --- # tasks file for ansible-role-resolver +- name: Append supersede domain-name-servers to /etc/dhclient.conf + lineinfile: + dest: /etc/dhclient.conf + regexp: "^supersede\\s+domain-name-servers\\s+(?!{{ resolver_nameservers | predictable_shuffle(ansible_fqdn) | join(',') }});" + state: absent + when: "{{ resolver_dhclient_enabled }}" + +- name: Append supersede domain-name-servers to /etc/dhclient.conf + lineinfile: + dest: /etc/dhclient.conf + line: "supersede domain-name-servers {{ resolver_nameservers | predictable_shuffle(ansible_fqdn) | join(',') }};" + register: register_dhclient_conf + when: "{{ resolver_dhclient_enabled }}" + +- name: Restart dhclient + service: + name: dhclient + state: restarted + arguments: "{{ resolver_dhclient_interface }}" + when: register_dhclient_conf.changed + - name: Create resolv.conf template: src: resolv.conf.j2 diff --git a/tests/serverspec/default.yml b/tests/serverspec/default.yml index d40d651..b064cc7 100644 --- a/tests/serverspec/default.yml +++ b/tests/serverspec/default.yml @@ -7,4 +7,4 @@ - 192.168.1.1 - 192.168.1.2 - 192.168.1.3 - resolver_dhclient_interface: "{% if ansible_os_family == 'RedHat' %}eth0{% endif %}" + resolver_dhclient_interface: "{% if ansible_os_family == 'RedHat' %}eth0{% elif ansible_os_family == 'FreeBSD' %}em0{% endif %}" diff --git a/tests/serverspec/default_spec.rb b/tests/serverspec/default_spec.rb index c8daa83..bb8b45f 100644 --- a/tests/serverspec/default_spec.rb +++ b/tests/serverspec/default_spec.rb @@ -5,6 +5,10 @@ describe file('/etc/resolvconf.conf') do its(:content) { should match /name_servers="192\.168\.1\.2 192\.168\.1\.3 192\.168\.1\.1"/ } end + + describe file('/etc/dhclient.conf') do + its(:content) { should match /^supersede\s+domain-name-servers\s+#{ Regexp.escape('192.168.1.2,192.168.1.3,192.168.1.1') };/ } + end when 'centos' describe file() do its(:content) { should match /PEERDNS=no/ }