Merge "Use ansible to generate bind pool configuration"
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Added new role ``designate_bind_pool`` to generate a bind pool configuration
|
||||
using information from the existing deployment.
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
designate_pool_config_file_path: '/var/lib/config-data/puppet-generated/designate/etc/designate/pools.yaml'
|
||||
designate_bind_pool_key_file_path: '/var/lib/config-data/puppet-generated/designate/etc/designate/private'
|
||||
pool_zone_domain: 'example.org'
|
||||
42
tripleo_ansible/roles/designate_bind_pool/meta/main.yml
Normal file
42
tripleo_ansible/roles/designate_bind_pool/meta/main.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
# Copyright 2021 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
galaxy_info:
|
||||
author: OpenStack
|
||||
description: TripleO OpenStack Role -- designate_bind_pool
|
||||
company: Red Hat
|
||||
license: Apache-2.0
|
||||
min_ansible_version: 2.7
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
platforms:
|
||||
- name: CentOS
|
||||
versions:
|
||||
- 7
|
||||
- 8
|
||||
|
||||
galaxy_tags:
|
||||
- tripleo
|
||||
|
||||
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
# dependencies:
|
||||
20
tripleo_ansible/roles/designate_bind_pool/tasks/main.yml
Normal file
20
tripleo_ansible/roles/designate_bind_pool/tasks/main.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
# XXX (beagles) which permissions?
|
||||
- name: create bind pool configuration for designate
|
||||
become: true
|
||||
template:
|
||||
src: pools.yaml.j2
|
||||
dest: "{{ designate_pool_config_file_path }}"
|
||||
|
||||
- name: ensure rndc key path exists
|
||||
become: true
|
||||
file:
|
||||
path: "{{ designate_bind_pool_key_file_path }}"
|
||||
state: directory
|
||||
|
||||
- name: create rndc key files for each bind instance
|
||||
become: true
|
||||
template:
|
||||
src: rndc.key.j2
|
||||
dest: "{{ designate_bind_pool_key_file_path }}/bind{{ item.0|int + 1 }}.key"
|
||||
with_indexed_items: "{{ designate_bind_node_ips }}"
|
||||
@@ -0,0 +1,55 @@
|
||||
- name: default
|
||||
# The name is immutable. There will be no option to change the name after
|
||||
# creation and the only way will to change it will be to delete it
|
||||
# (and all zones associated with it) and recreate it.
|
||||
description: Default Pool
|
||||
|
||||
attributes: {}
|
||||
|
||||
# List out the NS records for zones hosted within this pool
|
||||
# This should be a record that is created outside of designate, that
|
||||
# points to the public IP of the controller node.
|
||||
ns_records:
|
||||
{% for nameserver in designate_bind_node_ips -%}
|
||||
- hostname: ns{{ loop.index }}.{{ pool_zone_domain }}.
|
||||
priority: {{ loop.index }}
|
||||
{% endfor %}
|
||||
|
||||
# List out the nameservers for this pool. These are the actual BIND servers.
|
||||
# We use these to verify changes have propagated to all nameservers.
|
||||
nameservers:
|
||||
{% for nameserver in designate_bind_node_ips -%}
|
||||
- host: {{ nameserver }}
|
||||
port: 53
|
||||
{% endfor %}
|
||||
|
||||
# List out the targets for this pool. For BIND there will be one
|
||||
# entry for each BIND server, as we have to run rndc command on each server
|
||||
targets:
|
||||
{% for server in designate_bind_node_ips -%}
|
||||
- type: bind9
|
||||
description: BIND9 Server {{ loop.index }}
|
||||
|
||||
# List out the designate-mdns servers from which BIND servers should
|
||||
# request zone transfers (AXFRs) from.
|
||||
# This should be the IP of the controller node.
|
||||
# If you have multiple controllers you can add multiple masters
|
||||
# by running designate-mdns on them, and adding them here.
|
||||
# XXX(beagles): these are just internal API atm but there really needs to
|
||||
# be a public VIP endpoint for each and will be addressed in a followup
|
||||
# patch.
|
||||
masters:
|
||||
{% for minidns_server in designate_mdns_node_ips -%}
|
||||
- host: {{ minidns_server }}
|
||||
port: 5354
|
||||
{% endfor %}
|
||||
|
||||
# BIND Configuration options
|
||||
options:
|
||||
host: {{ server }}
|
||||
port: 53
|
||||
rndc_host: {{ server }}
|
||||
rndc_port: 953
|
||||
rndc_key_file: {{ keyfile_base_path|default('/etc/designate/private/bind') }}{{ loop.index }}.key
|
||||
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,4 @@
|
||||
key "rndc-key" {
|
||||
algorithm hmac-sha256;
|
||||
secret "{{ designate_rndc_key }}";
|
||||
};
|
||||
Reference in New Issue
Block a user