Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Ubuntu #8

Merged
merged 2 commits into from Nov 1, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions .kitchen.yml
Expand Up @@ -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:
Expand Down
23 changes: 20 additions & 3 deletions 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

Expand All @@ -12,18 +17,30 @@ 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

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 <tomoyukis@reallyenglish.com>

Permission to use, copy, modify, and distribute this software for any
Expand Down
6 changes: 3 additions & 3 deletions meta/main.yml
Expand Up @@ -13,9 +13,9 @@ galaxy_info:
- name: OpenBSD
versions:
- 6.0
# - name: Ubuntu
# versions:
# - trusty
- name: Ubuntu
versions:
- trusty
- name: EL
versions:
- 7
Expand Down
27 changes: 27 additions & 0 deletions 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
21 changes: 21 additions & 0 deletions 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
Expand Down
2 changes: 1 addition & 1 deletion tests/serverspec/default.yml
Expand Up @@ -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 %}"
11 changes: 11 additions & 0 deletions tests/serverspec/default_spec.rb
Expand Up @@ -5,19 +5,30 @@
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/ }
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
Expand Down
2 changes: 2 additions & 0 deletions tests/serverspec/fixed_ip_spec.rb
Expand Up @@ -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
Expand Down