Skip to content
This repository has been archived by the owner on Dec 9, 2020. It is now read-only.

Commit

Permalink
Updated dns-records role to allow for greater flexibility (#882)
Browse files Browse the repository at this point in the history
* Updated dns-records role to allow for greater flexibility

* Updated dns-records role to allow for greater flexibility

* Updated dns-records role to allow for greater flexibility
  • Loading branch information
oybed authored and bogdando committed Jan 2, 2018
1 parent c87a00a commit 8ffc9f0
Showing 1 changed file with 67 additions and 52 deletions.
119 changes: 67 additions & 52 deletions roles/dns-records/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,12 @@
---
- name: "Generate list of private A records"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': hostvars[item]['ansible_hostname'], 'ip': hostvars[item]['private_v4'] } ] }}"
with_items: "{{ groups['cluster_hosts'] }}"

- name: "Add wildcard records to the private A records for infrahosts"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': '*.' + openshift_app_domain, 'ip': hostvars[item]['private_v4'] } ] }}"
with_items: "{{ groups['infra_hosts'] }}"

- name: "Add public master cluster hostname records to the private A records (single master)"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(full_dns_domain, ''))[:-1], 'ip': hostvars[groups.masters[0]].private_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters == 1

- name: "Add public master cluster hostname records to the private A records (multi-master)"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(full_dns_domain, ''))[:-1], 'ip': hostvars[groups.lb[0]].private_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters > 1

- name: "Set the private DNS server to use the external value (if provided)"
set_fact:
nsupdate_server_private: "{{ external_nsupdate_keys['private']['server'] }}"
nsupdate_key_secret_private: "{{ external_nsupdate_keys['private']['key_secret'] }}"
nsupdate_key_algorithm_private: "{{ external_nsupdate_keys['private']['key_algorithm'] }}"
nsupdate_private_key_name: "{{ external_nsupdate_keys['private']['key_name']|default('private-' + full_dns_domain) }}"
nsupdate_zone_private: "{{ external_nsupdate_keys['private']['zone']|default(full_dns_domain) }}"
when:
- external_nsupdate_keys is defined
- external_nsupdate_keys['private'] is defined
Expand All @@ -38,78 +16,115 @@
nsupdate_server_private: "{{ hostvars[groups['dns'][0]].public_v4 }}"
nsupdate_key_secret_private: "{{ hostvars[groups['dns'][0]].nsupdate_keys['private-' + full_dns_domain].key_secret }}"
nsupdate_key_algorithm_private: "{{ hostvars[groups['dns'][0]].nsupdate_keys['private-' + full_dns_domain].key_algorithm }}"
nsupdate_zone_private: "{{ full_dns_domain }}"
when:
- nsupdate_server_private is undefined

- name: "Generate list of private A records"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[item]['ansible_fqdn'] | replace('.' + nsupdate_zone_private, '')), 'ip': hostvars[item]['private_v4'] } ] }}"
with_items: "{{ groups['cluster_hosts'] }}"

- name: "Add wildcard records to the private A records for infrahosts"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': '*.' + (openshift_master_default_subdomain | replace('.' + nsupdate_zone_private, '')), 'ip': hostvars[item]['private_v4'] } ] }}"
when:
- openshift_master_default_subdomain is defined
- openshift_master_default_subdomain|trim != ''
with_items:
- "{{ groups['infra_hosts'] }}"

- name: "Add public master cluster hostname records to the private A records (single master)"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(nsupdate_zone_private, ''))[:-1], 'ip': hostvars[groups.masters[0]].private_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters == 1

- name: "Add public master cluster hostname records to the private A records (multi-master)"
set_fact:
private_records: "{{ private_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(nsupdate_zone_private, ''))[:-1], 'ip': hostvars[groups.lb[0]].private_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters > 1

- name: "Generate the private Add section for DNS"
set_fact:
private_named_records:
- view: "private"
zone: "{{ full_dns_domain }}"
zone: "{{ nsupdate_zone_private }}"
server: "{{ nsupdate_server_private }}"
key_name: "{{ nsupdate_private_key_name|default('private-' + full_dns_domain) }}"
key_secret: "{{ nsupdate_key_secret_private }}"
key_algorithm: "{{ nsupdate_key_algorithm_private | lower }}"
entries: "{{ private_records }}"

- name: "Set the public DNS server details to use the external value (if provided)"
set_fact:
nsupdate_server_public: "{{ external_nsupdate_keys['public']['server'] }}"
nsupdate_key_secret_public: "{{ external_nsupdate_keys['public']['key_secret'] }}"
nsupdate_key_algorithm_public: "{{ external_nsupdate_keys['public']['key_algorithm'] }}"
nsupdate_public_key_name: "{{ external_nsupdate_keys['public']['key_name']|default('public-' + full_dns_domain) }}"
nsupdate_zone_public: "{{ external_nsupdate_keys['public']['zone']|default(full_dns_domain) }}"
when:
- external_nsupdate_keys is defined
- external_nsupdate_keys['public'] is defined

- name: "Set the public DNS server details to use the provisioned value"
set_fact:
nsupdate_server_public: "{{ hostvars[groups['dns'][0]].public_v4 }}"
nsupdate_key_secret_public: "{{ hostvars[groups['dns'][0]].nsupdate_keys['public-' + full_dns_domain].key_secret }}"
nsupdate_key_algorithm_public: "{{ hostvars[groups['dns'][0]].nsupdate_keys['public-' + full_dns_domain].key_algorithm }}"
nsupdate_zone_public: "{{ full_dns_domain }}"
when:
- nsupdate_server_public is undefined

- name: "Generate list of public A records"
set_fact:
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': hostvars[item]['ansible_hostname'], 'ip': hostvars[item]['public_v4'] } ] }}"
with_items: "{{ groups['cluster_hosts'] }}"
when: hostvars[item]['public_v4'] is defined
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[item]['ansible_fqdn'] | replace('.' + nsupdate_zone_public, '')), 'ip': hostvars[item]['public_v4'] } ] }}"
with_items:
- "{{ groups['cluster_hosts'] }}"
when:
- hostvars[item]['public_v4'] is defined

- name: "Add wildcard records to the public A records"
set_fact:
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': '*.' + openshift_app_domain, 'ip': hostvars[item]['public_v4'] } ] }}"
with_items: "{{ groups['infra_hosts'] }}"
when: hostvars[item]['public_v4'] is defined
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': '*.' + (openshift_master_default_subdomain | replace('.' + nsupdate_zone_public, '')), 'ip': hostvars[item]['public_v4'] } ] }}"
with_items:
- "{{ groups['infra_hosts'] }}"
when:
- openshift_master_default_subdomain is defined
- openshift_master_default_subdomain|trim != ''
- hostvars[item]['public_v4'] is defined

- name: "Add public master cluster hostname records to the public A records (single master)"
set_fact:
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(full_dns_domain, ''))[:-1], 'ip': hostvars[groups.masters[0]].public_v4 } ] }}"
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(nsupdate_zone_public, ''))[:-1], 'ip': hostvars[groups.masters[0]].public_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters == 1
- not use_bastion|bool

- name: "Add public master cluster hostname records to the public A records (single master behind a bastion)"
set_fact:
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(full_dns_domain, ''))[:-1], 'ip': hostvars[groups.bastions[0]].public_v4 } ] }}"
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(nsupdate_zone_public, ''))[:-1], 'ip': hostvars[groups.bastions[0]].public_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters == 1
- use_bastion|bool

- name: "Add public master cluster hostname records to the public A records (multi-master)"
set_fact:
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(full_dns_domain, ''))[:-1], 'ip': hostvars[groups.lb[0]].public_v4 } ] }}"
public_records: "{{ public_records | default([]) + [ { 'type': 'A', 'hostname': (hostvars[groups.masters[0]].openshift_master_cluster_public_hostname | replace(nsupdate_zone_public, ''))[:-1], 'ip': hostvars[groups.lb[0]].public_v4 } ] }}"
when:
- hostvars[groups.masters[0]].openshift_master_cluster_public_hostname is defined
- openstack_num_masters > 1

- name: "Set the public DNS server details to use the external value (if provided)"
set_fact:
nsupdate_server_public: "{{ external_nsupdate_keys['public']['server'] }}"
nsupdate_key_secret_public: "{{ external_nsupdate_keys['public']['key_secret'] }}"
nsupdate_key_algorithm_public: "{{ external_nsupdate_keys['public']['key_algorithm'] }}"
nsupdate_public_key_name: "{{ external_nsupdate_keys['public']['key_name']|default('public-' + full_dns_domain) }}"
when:
- external_nsupdate_keys is defined
- external_nsupdate_keys['public'] is defined

- name: "Set the public DNS server details to use the provisioned value"
set_fact:
nsupdate_server_public: "{{ hostvars[groups['dns'][0]].public_v4 }}"
nsupdate_key_secret_public: "{{ hostvars[groups['dns'][0]].nsupdate_keys['public-' + full_dns_domain].key_secret }}"
nsupdate_key_algorithm_public: "{{ hostvars[groups['dns'][0]].nsupdate_keys['public-' + full_dns_domain].key_algorithm }}"
when:
- nsupdate_server_public is undefined

- name: "Generate the public Add section for DNS"
set_fact:
public_named_records:
- view: "public"
zone: "{{ full_dns_domain }}"
zone: "{{ nsupdate_zone_public }}"
server: "{{ nsupdate_server_public }}"
key_name: "{{ nsupdate_public_key_name|default('public-' + full_dns_domain) }}"
key_secret: "{{ nsupdate_key_secret_public }}"
Expand Down

0 comments on commit 8ffc9f0

Please sign in to comment.