46258cc435
When the upper constraints are not applied, the resulting build for the same tag may be different from one day to the next. This results in an inconsistent experience for deployers. This patch sets the upper constraints to be used by the following: - https://review.openstack.org/388159 (lxc hosts) - https://review.openstack.org/388072 (pip install) - https://review.openstack.org/388230 (keystone install) This is a pattern to establish across other roles. As some pip installs happen before the repo server is up a common set of tasks is added to a few of the plays to verify if there is a local copy of constraints available. If not it will then source the upstream constraints based on the OpenStack requirements SHA that's been pinned. Change-Id: I7ddd44be30c610609c1429147646dcb1d3e6ca59
99 lines
3.5 KiB
YAML
99 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_all
|
|
gather_facts: "{{ gather_facts | default(True) }}"
|
|
user: root
|
|
pre_tasks:
|
|
- include: common-tasks/set-upper-constraints.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_all"
|
|
- all
|
|
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_ssh_host'], priority=100)) -%}{% endif -%}
|
|
{% else -%}
|
|
{% if _var.append(dict(host=hostvars[i]['ansible_ssh_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_all'] is defined and groups['unbound_all'] | length > 0 }}"
|