Skip to content

Instantly share code, notes, and snippets.

@jpic
Created December 8, 2017 02:28
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpic/7bfbe20cf759986b7c7c7851c2d63762 to your computer and use it in GitHub Desktop.
Save jpic/7bfbe20cf759986b7c7c7851c2d63762 to your computer and use it in GitHub Desktop.
Install docker-dns-gen on Ubuntu artful
---
- hosts: all
become: true
become_method: sudo
become_user: root
handlers:
- name: Restart
notify: Restart dnsmasq
shell: systemctl daemon-reload
- name: Restart dnsmasq
notify: Restart docker
service: name=dnsmasq state=restarted
- name: Restart docker
service: name=docker state=restarted
tasks:
- name: Remove bind9 if present
failed_when: false
apt:
name: bind9
state: absent
- name: Install dnsmasq
apt:
name: dnsmasq
state: present
- name: Run docker-dns
docker_container:
name: dns
image: jderusse/dns-gen
restart_policy: always
published_ports: ['54:53/udp']
capabilities: [NET_BIND_SERVICE]
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- name: /etc/systemd/system/docker.service.d/override.conf
copy:
dest: /etc/systemd/system/docker.service.d/override.conf
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --bip=172.17.0.1/16 --dns=172.17.0.1
- name: /etc/systemd/system/dnsmasq.service.d/override.conf
notify: Restart
copy:
dest: /etc/systemd/system/dnsmasq.service.d/override.conf
content: |
[Unit]
After=docker.service
- name: /etc/dnsmasq.d/upstream.conf
notify: Restart
copy:
dest: /etc/dnsmasq.d/upstream.conf
content: server=8.8.8.8
- name: /etc/dnsmasq.d/docker.conf
notify: Restart
copy:
dest: /etc/dnsmasq.d/docker.conf
content: |
bind-interfaces
interface=lo
interface=docker0
server=/docker/127.0.0.1#54
- name: /etc/dnsmasq.d/local.conf
when: dns_local_resolve is defined
notify: Restart
copy:
dest: /etc/dnsmasq.d/local.conf
content: |
{% for dns in dns_local_resolve.split(',') %}
server=/{{ dns }}/127.0.0.1#54
{% endfor %}
- name: Configure /etc/resolv.conf
copy:
dest: /etc/resolv.conf
content: |
search docker
nameserver 127.0.0.1
@achton
Copy link

achton commented Jan 17, 2018

@jpic I'm trying to do this setup by hand (I don't have Ansible, and it doesn't match the advanced setup in the README for docker-dns-gen). But I don't quite grok the code in "/etc/dnsmasq.d/local.conf" - which subsystem is supposed to handle the for loop there? Is it Ansible syntax? I can't find any documentation on dns_local_resolve.split().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment