d04647afd2
Unbound containers should attempt to use the package cache proxy if it is available. Change-Id: Ib91085c750646272543e914548bfdb300e9faf31
100 lines
3.5 KiB
YAML
100 lines
3.5 KiB
YAML
---
|
|
# Copyright 2016, Logan Vig <logan2211@gmail.com>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
- name: Install unbound DNS resolvers
|
|
hosts:
|
|
- unbound
|
|
gather_facts: "{{ gather_facts | default(True) }}"
|
|
user: root
|
|
pre_tasks:
|
|
- include: common-tasks/package-cache-proxy.yml
|
|
roles:
|
|
- role: "unbound"
|
|
tags:
|
|
- unbound_server
|
|
- role: "system_crontab_coordination"
|
|
tags:
|
|
- "system-crontab-coordination"
|
|
vars_files:
|
|
- defaults/repo_packages/openstack_services.yml
|
|
vars:
|
|
is_metal: "{{ properties.is_metal|default(false) }}"
|
|
|
|
- name: Install unbound DNS resolver client configurations
|
|
hosts:
|
|
- "!unbound"
|
|
- "{{ openstack_host_group|default('hosts') }}"
|
|
- "{{ container_group|default('all_containers') }}"
|
|
user: root
|
|
pre_tasks:
|
|
#gather a list of physical_hosts containing unbound containers
|
|
- name: Set unbound physical hosts fact
|
|
set_fact:
|
|
unbound_physical_hosts: >
|
|
{% set _var = [] -%}
|
|
{% for i in groups[resolvconf_resolver_group] -%}
|
|
{% if hostvars[i]['physical_host'] is defined -%}
|
|
{% if _var.append(hostvars[i]['physical_host']) -%}{% endif -%}
|
|
{% endif -%}
|
|
{% endfor -%}
|
|
{{ _var }}
|
|
when: resolvconf_enabled | bool
|
|
#create a sorted resolver list with affinity toward unbound container(s)
|
|
#on the same physical_host
|
|
- name: Apply resolver sorting
|
|
set_fact:
|
|
resolver_list: >
|
|
{% set _var = [] -%}
|
|
{% for i in groups[resolvconf_resolver_group] -%}
|
|
{% if physical_host is defined
|
|
and hostvars[i]['physical_host'] is defined
|
|
and physical_host == hostvars[i]['physical_host'] -%}
|
|
{% if _var.append(dict(host=hostvars[i]['ansible_host'], priority=100)) -%}{% endif -%}
|
|
{% else -%}
|
|
{% if _var.append(dict(host=hostvars[i]['ansible_host'], priority=50)) -%}{% endif -%}
|
|
{% endif -%}
|
|
{% endfor -%}
|
|
{{ _var }}
|
|
when:
|
|
- resolvconf_enabled | bool
|
|
- physical_host is defined
|
|
- physical_host in unbound_physical_hosts
|
|
- name: Set resolver IP list fact
|
|
set_fact:
|
|
resolvconf_resolver_ips: "{{ resolver_list | sort(reverse=true, attribute='priority') | map(attribute='host') | list }}"
|
|
resolvconf_options:
|
|
- 'timeout:1'
|
|
when:
|
|
- resolvconf_enabled | bool
|
|
- resolver_list is defined
|
|
- resolver_list | length > 0
|
|
#rotate is only used when no physical_host affinity is defined
|
|
- name: Set resolver rotate when physical_host is not an unbound host
|
|
set_fact:
|
|
resolvconf_options:
|
|
- 'timeout:1'
|
|
- 'rotate'
|
|
when:
|
|
- resolvconf_enabled | bool
|
|
- resolver_list is not defined
|
|
roles:
|
|
- role: "resolvconf"
|
|
when: resolvconf_enabled | bool
|
|
tags:
|
|
- unbound_client
|
|
vars:
|
|
#Only run the resolvconf role when DNS containers are deployed to the env.
|
|
resolvconf_enabled: "{{ groups['unbound'] is defined and groups['unbound'] | length > 0 }}"
|