Merge "Remove hiera roles"
This commit is contained in:
commit
d7ad3a3008
|
@ -31,5 +31,3 @@ gzip
|
|||
# Required to build language docs
|
||||
gettext
|
||||
|
||||
# Required for molecule testing
|
||||
docker
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
tripleo-hieradata
|
||||
=================
|
||||
|
||||
An Ansible role to hieradata files.
|
||||
|
||||
Role variables
|
||||
--------------
|
||||
|
||||
Required:
|
||||
|
||||
* `hieradata_template` -- path to template of hieradata content
|
||||
* `hieradata_variable_start_string` -- string marking the beginning of a template print statement.
|
||||
* `hieradata_variable_end_string` -- string marking the end of a template print statement.
|
||||
* `hieradata_per_host` -- whether or not we configure hieradata per host.
|
||||
* `hieradata_files` -- List of hieradata files (Order matters for Hierarchy).
|
||||
|
||||
Test playbook
|
||||
-------------
|
||||
|
||||
Assuming you have tripleo-inventory.yml generated, you can run the
|
||||
test playbook like:
|
||||
|
||||
ANSIBLE_ROLES_PATH=tripleo-common/roles \
|
||||
ANSIBLE_HOST_KEY_CHECKING=False \
|
||||
ansible-playbook \
|
||||
-i tripleo-inventory.yml \
|
||||
tripleo-common/roles/tripleo-hieradata/test-playbook.yml
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Free software: Apache License (2.0)
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
OpenStack TripleO team
|
|
@ -1,10 +0,0 @@
|
|||
hieradata_template: ""
|
||||
hieradata_files: []
|
||||
# jinja2 escape trick for simple {{ and }} strings:
|
||||
hieradata_variable_start_string: "{{ '{{' }}"
|
||||
hieradata_variable_end_string: "{{ '}}' }}"
|
||||
hieradata_per_host: false
|
||||
hieradata_templates_list:
|
||||
- bootstrap_node
|
||||
- all_nodes
|
||||
- vip_data
|
|
@ -1,5 +0,0 @@
|
|||
- name: Render hieradata from template
|
||||
template:
|
||||
src: templates/{{ item }}.j2
|
||||
dest: "{{ dest_path | default('/etc/puppet/hieradata/' ~ item ~ '.json') }}"
|
||||
loop: "{{ hieradata_templates_list }}"
|
|
@ -1,21 +0,0 @@
|
|||
- name: Create /etc/puppet/hieradata
|
||||
file:
|
||||
path: /etc/puppet/hieradata
|
||||
state: directory
|
||||
mode: 0700
|
||||
|
||||
- name: Write hiera config
|
||||
when: (hieradata_files | length) > 0
|
||||
copy:
|
||||
mode: 0600
|
||||
dest: /etc/puppet/hiera.yaml
|
||||
# TODO(emilien) Switch to Hiera5 format once we stop calling Hiera CLI
|
||||
# which is deprecated and should be replaced by "puppet lookup" command.
|
||||
content: |
|
||||
---
|
||||
:backends:
|
||||
- json
|
||||
:json:
|
||||
:datadir: /etc/puppet/hieradata
|
||||
:hierarchy:
|
||||
{{ hieradata_files | to_nice_yaml if hieradata_files | type_debug == 'list' else hieradata_files }}
|
|
@ -1,62 +0,0 @@
|
|||
{
|
||||
{% set all_enabled_services = (enabled_services + all_nodes_extra_map_data['enabled_services'] | default([])) | unique %}
|
||||
|
||||
"enabled_services": {{ all_enabled_services | to_nice_json }},
|
||||
|
||||
{% for service in all_enabled_services %}
|
||||
|
||||
{# <service>_enabled: true #}
|
||||
{{ '"' ~ service ~ '_enabled": true,' }}
|
||||
|
||||
{# <service>_node_ips: <list of ips> #}
|
||||
{{ '"' ~ service ~ '_node_ips": ' ~ ((groups[service] | default ([]) | map('extract', hostvars, service_net_map[service ~ '_network'] | default('ctlplane') ~ '_ip') | list + all_nodes_extra_map_data[service ~ '_node_ips'] | default([])) | to_json) ~ ',' }}
|
||||
|
||||
{% if nova_additional_cell %}
|
||||
{# <service>_cell_node_names: <list of hostnames> #}
|
||||
{{ '"' ~ service ~ '_cell_node_names": ' ~ (groups[service] | default ([]) | map('extract', hostvars, service_net_map[service ~ '_network'] | default('ctlplane') ~ '_hostname') | list | to_json) ~ ',' }}
|
||||
{% else %}
|
||||
{# <service>_node_names: <list of hostnames> #}
|
||||
{{ '"' ~ service ~ '_node_names": ' ~ ((groups[service] | default ([]) | map('extract', hostvars, service_net_map[service ~ '_network'] | default('ctlplane') ~ '_hostname') | list + all_nodes_extra_map_data[service ~ '_node_names'] | default([])) | to_json) ~ ',' }}
|
||||
{% endif %}
|
||||
|
||||
{# <service>_short_node_names: <list of hostnames> #}
|
||||
{{ '"' ~ service ~ '_short_node_names": ' ~ ((groups[service] | default ([]) | map('extract', hostvars, 'inventory_hostname') | list + all_nodes_extra_map_data[service ~ '_short_node_names'] | default([])) | to_json) ~ ',' }}
|
||||
|
||||
{# <service>_short_bootstrap_node_name: hostname #}
|
||||
{% set services = (groups[service] | default ([]) | map('extract', hostvars, 'inventory_hostname')) | list + [all_nodes_extra_map_data[service ~ '_short_bootstrap_node_name'] | default('') ] %}
|
||||
{% if (services | length) > 0 %}
|
||||
{{ '"' ~ service ~ '_short_bootstrap_node_name": ' ~ (services | first | to_json) ~ ',' }}
|
||||
{% endif %}
|
||||
|
||||
{# <service>_bootstrap_node_ip: ip #}
|
||||
{% set services = (groups[service] | default ([]) | map('extract', hostvars, service_net_map[service ~ '_network'] | default('ctlplane') ~ '_ip')) | list %}
|
||||
{% if (services | length) > 0 %}
|
||||
{{ '"' ~ service ~ '_bootstrap_node_ip": ' ~ ((services + [all_nodes_extra_map_data[service ~ '_bootstrap_node_ip'] | default('')]) | first | to_json) ~ ',' }}
|
||||
{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
{# <service>_network: <network> #}
|
||||
{% for service, network in service_net_map.items() %}
|
||||
{{ '"' ~ service ~ '": "' ~ network ~ '",' }}
|
||||
{% endfor %}
|
||||
|
||||
{% if 'redis' in enabled_services %}
|
||||
"redis_vip": "{{ net_vip_map.redis }}",
|
||||
{% endif %}
|
||||
|
||||
{{ '"deploy_identifier": "' ~ deploy_identifier ~ '"' }},
|
||||
|
||||
{{ '"stack_action": "' ~ stack_action ~ '"' }},
|
||||
|
||||
{{ '"stack_update_type": "' ~ stack_update_type ~ '"' }},
|
||||
|
||||
{{ '"container_cli": "' ~ container_cli ~ '"' }},
|
||||
|
||||
{{ '"controller_node_ips": "' ~ groups[primary_role_name] | default([]) | map('extract', hostvars, 'ctlplane_ip') | list | join(',') ~ '"' }},
|
||||
|
||||
{{ '"controller_node_names": "' ~ groups[primary_role_name] | default([]) | map('extract', hostvars, 'inventory_hostname') | list | join(',') ~ '"' }}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
{{ '"boostrap_node_id": "' ~ bootstrap_nodeid ~ '"' }}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"tripleo::clouddomain": "{{cloud_domain}}"
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{{ extraconfig | to_nice_json }}
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"fqdn_ctlplane": "{{ inventory_hostname ~ '.ctlplane.' ~ cloud_domain }}",
|
||||
"fqdn_canonical": "{{ inventory_hostname ~ '.' ~ cloud_domain }}"{% if enabled_networks | length > 0 and role_networks and role_networks | length > 0 %},{% endif %}
|
||||
{% if role_networks %}
|
||||
{% for network in enabled_networks %}
|
||||
{% if network in role_networks %}
|
||||
"fqdn_{{ networks[network]['name_lower'] }}": "{{ inventory_hostname ~ '.' ~ network | lower ~ '.' ~ cloud_domain }}"
|
||||
{%- endif %}{% if not loop.last and loop.nextitem | default("") in role_networks %},
|
||||
{% endif %}
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"ctlplane": "{{ ctlplane_ip }}",
|
||||
"ctlplane_subnet": "{{ ctlplane_ip ~ '/' ~ ctlplane_subnet_cidr }}",
|
||||
"ctlplane_uri": "{{ ctlplane_ip | ipwrap }}"{% if enabled_networks | length > 0 %},{% endif %}
|
||||
{%- for network in enabled_networks %}
|
||||
{%- if network_cidrs and network ~ '_cidr' in network_cidrs %}
|
||||
"{{ networks[network]['name'] }}": "{{ hostvars[inventory_hostname][networks[network]['name'] ~ '_ip'] }}",
|
||||
"{{ networks[network]['name'] }}_subnet": "{{ hostvars[inventory_hostname][networks[network]['name'] ~ '_ip'] ~ '/' ~ network_cidrs[network ~ '_cidr'] }}",
|
||||
"{{ networks[network]['name'] }}_uri": "{{ hostvars[inventory_hostname][networks[network]['name'] ~ '_ip'] | ipwrap }}"{% if not loop.last %},{% endif %}
|
||||
{%- else %}
|
||||
{# just add empty entries for this network if it doesn't apply to this role. matches previous behavior from Heat #}
|
||||
"{{ networks[network]['name'] }}": "",
|
||||
"{{ networks[network]['name'] }}_subnet": "",
|
||||
"{{ networks[network]['name'] }}_uri": ""{% if not loop.last %},{% endif %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{{ role_extraconfig | to_nice_json }}
|
|
@ -1 +0,0 @@
|
|||
{{ service_configs | to_nice_json }}
|
|
@ -1,52 +0,0 @@
|
|||
{
|
||||
"controller_virtual_ip": "{{ control_virtual_ip }}",
|
||||
"keystone_admin_api_vip": "{{ net_vip_map[service_net_map['keystone_admin_api_network']] }}",
|
||||
"keystone_public_api_vip": "{{ net_vip_map[service_net_map['keystone_public_api_network']] }}",
|
||||
|
||||
{%- if 'External' in enabled_networks %}
|
||||
"public_virtual_ip": "{{ net_vip_map[networks['External']['name_lower']] }}",
|
||||
{%- else %}
|
||||
"public_virtual_ip": "{{ net_vip_map.ctlplane }}",
|
||||
{%- endif %}
|
||||
|
||||
{%- if 'InternalApi' in enabled_networks %}
|
||||
{# the internal_api_virtual_ip is needed for contrail only #}
|
||||
"internal_api_virtual_ip": "{{ net_vip_map[networks['InternalApi']['name_lower']] }}",
|
||||
{%- endif %}
|
||||
|
||||
"network_virtual_ips": {{ network_virtual_ips | to_json }},
|
||||
|
||||
{%- for network in enabled_networks if network == 'StorageNFS' %}
|
||||
"ganesha_vip": "{{ net_vip_map[storagenfs_net_name] }}"
|
||||
{%- endfor %}
|
||||
|
||||
{# public_virtual_ip and controller_virtual_ip are needed in both HAproxy & keepalived. #}
|
||||
{%- if 'External' in enabled_networks %}
|
||||
"tripleo::haproxy::public_virtual_ip": "{{ net_vip_map[networks['External']['name_lower']] }}",
|
||||
"tripleo::keepalived::public_virtual_ip": "{{ net_vip_map[networks['External']['name_lower']] }}",
|
||||
{%- else %}
|
||||
"tripleo::haproxy::public_virtual_ip": "{{ net_vip_map.ctlplane }}",
|
||||
"tripleo::keepalived::public_virtual_ip": "{{ net_vip_map.ctlplane }}",
|
||||
{%- endif %}
|
||||
|
||||
"tripleo::haproxy::controller_virtual_ip": "{{ net_vip_map.ctlplane }}",
|
||||
"tripleo::keepalived::controller_virtual_ip": "{{ net_vip_map.ctlplane }}",
|
||||
"tripleo::keepalived::redis_virtual_ip": "{{ net_vip_map.redis }}",
|
||||
"tripleo::redis_notification::haproxy_monitor_ip": "{{ net_vip_map.ctlplane }}",
|
||||
|
||||
{%- for key, value in cloud_names.items() %}
|
||||
"{{key}}": "{{value}}",
|
||||
{%- endfor %}
|
||||
|
||||
"enable_internal_tls": {{ enable_internal_tls | lower }}
|
||||
|
||||
{%- for service in enabled_services %}
|
||||
{%- if service_net_map.get(service ~ '_network', 'noop') in net_vip_map %}
|
||||
{# we set explicit vips for these services, no need to calculate them dynamically #}
|
||||
{%- if service not in ['redis', 'ganesha', 'keystone_admin_api_vip', 'keystone_public_api_vip'] %}
|
||||
,"{{service}}_vip": "{{ net_vip_map[service_net_map[service ~ '_network']] }}"
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
- hosts: overcloud
|
||||
tasks:
|
||||
- name: test tripleo-hieradata
|
||||
include_role:
|
||||
name: tripleo-hieradata
|
||||
vars:
|
||||
hieradata_template: hieradata.j2.yaml
|
||||
# jinja2 escape trick for simple {{ and }} strings:
|
||||
variable_start_string: "{{ '{{' }}"
|
||||
variable_end_string: "{{ '}}' }}"
|
||||
hieradata_files:
|
||||
- node
|
||||
- common
|
||||
|
||||
- hosts: overcloud
|
||||
tasks:
|
||||
- name: Create hieradata from templates
|
||||
include_role:
|
||||
name: tripleo-hieradata
|
||||
tasks_from: hieradata_vars.yaml
|
|
@ -1,39 +0,0 @@
|
|||
tripleo-upgrade-hiera
|
||||
=====================
|
||||
|
||||
An Ansible role to set hiera value during upgrade as json value/key.
|
||||
|
||||
Role variables
|
||||
--------------
|
||||
|
||||
Required:
|
||||
|
||||
* `tripleo_upgrade_key` -- the hiera key to setup. (optional for remove_all)
|
||||
* `tripleo_upgrade_value` -- the hiera value to setup. (non-needed for remove and remove_all)
|
||||
|
||||
Optional:
|
||||
|
||||
* `tripleo_upgrade_hiera_file` -- hiera file to were the variable go.
|
||||
(defaults to "/etc/puppet/hieradata/upgrade.json")
|
||||
|
||||
Test playbook
|
||||
-------------
|
||||
|
||||
Assuming you have tripleo-inventory.yml generated, you can run the
|
||||
test playbook like:
|
||||
|
||||
ANSIBLE_ROLES_PATH=tripleo-common/roles \
|
||||
ANSIBLE_HOST_KEY_CHECKING=False \
|
||||
ansible-playbook
|
||||
-i tripleo-inventory.yml \
|
||||
tripleo-common/roles/tripleo-upgrade-hiera/test-playbook.yml
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Free software: Apache License (2.0)
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
OpenStack TripleO team
|
|
@ -1 +0,0 @@
|
|||
tripleo_upgrade_hiera_file: /etc/puppet/hieradata/upgrade.json
|
|
@ -1,35 +0,0 @@
|
|||
- name: create the directory for hiera file
|
||||
file:
|
||||
path: "{{ tripleo_upgrade_hiera_file|dirname }}"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
mode: 0755
|
||||
state: directory
|
||||
become: yes
|
||||
|
||||
- name: check if the upgrade file exists.
|
||||
stat:
|
||||
path: "{{ tripleo_upgrade_hiera_file }}"
|
||||
register: _tripleo_upgrade_hiera_file
|
||||
become: yes
|
||||
|
||||
- name: check if the file contains valid json
|
||||
command: "jq . {{ tripleo_upgrade_hiera_file }}"
|
||||
register: _tripleo_upgrade_hiera_test
|
||||
become: yes
|
||||
when: _tripleo_upgrade_hiera_file.stat.exists
|
||||
|
||||
- name: create the hiera file when no file or empty file.
|
||||
copy:
|
||||
dest: "{{ tripleo_upgrade_hiera_file }}"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
mode: 0644
|
||||
content: "{}"
|
||||
become: yes
|
||||
when: not _tripleo_upgrade_hiera_file.stat.exists or _tripleo_upgrade_hiera_test.stdout == ""
|
||||
|
||||
- name: load the json hiera data
|
||||
command: "jq . {{ tripleo_upgrade_hiera_file }}"
|
||||
register: tripleo_upgrade_hiera_command
|
||||
become: yes
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
- name: delete the upgrade hiera file
|
||||
file:
|
||||
path: "{{ tripleo_upgrade_hiera_file }}"
|
||||
state: absent
|
||||
become: yes
|
|
@ -1,22 +0,0 @@
|
|||
---
|
||||
- name: ensure tripleo-upgrade hiera file exists
|
||||
include_tasks: create-tripleo-upgrade-file.yml
|
||||
|
||||
- name: reset tripleo_upgrade_hiera_data_del fact
|
||||
set_fact:
|
||||
tripleo_upgrade_hiera_data_del: {}
|
||||
|
||||
- name: remove a tripleo-upgrade key
|
||||
set_fact:
|
||||
tripleo_upgrade_hiera_data_del: "{{ tripleo_upgrade_hiera_data_del|combine({upgrade_hiera_item.key: upgrade_hiera_item.value}) }}"
|
||||
cacheable: no
|
||||
when: upgrade_hiera_item.key != tripleo_upgrade_key
|
||||
loop_control:
|
||||
loop_var: upgrade_hiera_item
|
||||
loop: "{{ tripleo_upgrade_hiera_command.stdout | from_json | default({}) | dict2items }}"
|
||||
|
||||
- name: write the updated tripleo-upgrade hiera data
|
||||
copy:
|
||||
content: "{{ tripleo_upgrade_hiera_data_del | to_nice_json }}"
|
||||
dest: "{{ tripleo_upgrade_hiera_file }}"
|
||||
become: yes
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
- name: ensure tripleo-upgrade hiera file exists
|
||||
include_tasks: create-tripleo-upgrade-file.yml
|
||||
|
||||
- name: set/update the tripleo-upgrade key/value
|
||||
set_fact:
|
||||
tripleo_upgrade_hiera_data_add: "{{ tripleo_upgrade_hiera_command.stdout | from_json | combine({ tripleo_upgrade_key: tripleo_upgrade_value }) }}"
|
||||
cacheable: no
|
||||
|
||||
- name: write the updated tripleo-upgrade hiera data
|
||||
copy:
|
||||
content: "{{ tripleo_upgrade_hiera_data_add | to_nice_json }}"
|
||||
dest: "{{ tripleo_upgrade_hiera_file }}"
|
||||
become: yes
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
- hosts: controller-0
|
||||
gather_facts: false
|
||||
become: true
|
||||
tasks:
|
||||
- name: test tripleo-upgrade-hiera - add a first value
|
||||
include_role:
|
||||
name: tripleo-upgrade-hiera
|
||||
tasks_from: set.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: pacemaker_short_node_names_override
|
||||
tripleo_upgrade_value: [ "controller-0" ]
|
||||
|
||||
- name: test tripleo-upgrade-hiera - add another value
|
||||
include_role:
|
||||
name: tripleo-upgrade-hiera
|
||||
tasks_from: set.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: mysql_short_node_names_override
|
||||
tripleo_upgrade_value: [ "controller-0", "controller-1" ]
|
||||
|
||||
- name: test tripleo-upgrade-hiera - update a value
|
||||
include_role:
|
||||
name: tripleo-upgrade-hiera
|
||||
tasks_from: set.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: mysql_short_node_names_override
|
||||
tripleo_upgrade_value: [ "controller-1" ]
|
||||
|
||||
- name: test tripleo-upgrade-hiera - remove a value
|
||||
include_role:
|
||||
name: tripleo-upgrade-hiera
|
||||
tasks_from: remove.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: pacemaker_short_node_names_override
|
||||
|
||||
- name: test tripleo-upgrade-hiera - remove all values
|
||||
include_role:
|
||||
name: tripleo-upgrade-hiera
|
||||
tasks_from: remove-all.yml
|
17
tox.ini
17
tox.ini
|
@ -1,6 +1,6 @@
|
|||
[tox]
|
||||
minversion = 3.8
|
||||
envlist = linters,py27,py37,molecule
|
||||
envlist = linters,py27,py37
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
|
@ -20,7 +20,6 @@ setenv =
|
|||
passenv =
|
||||
ANSIBLE_*
|
||||
DOCKER_*
|
||||
MOLECULE_*
|
||||
PYTEST*
|
||||
SSH_AUTH_SOCK
|
||||
TERM
|
||||
|
@ -75,20 +74,6 @@ skip_install = true
|
|||
deps =
|
||||
commands =
|
||||
tox -e linters -- bashate
|
||||
[testenv:molecule]
|
||||
deps =
|
||||
ansi2html
|
||||
docker>=3.7
|
||||
mock
|
||||
molecule>=2.22rc3
|
||||
pytest
|
||||
pytest-cov
|
||||
pytest-html
|
||||
pytest-molecule>=1.0rc1
|
||||
pytest-xdist
|
||||
selinux
|
||||
commands =
|
||||
python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {posargs:roles}
|
||||
|
||||
[testenv:linters]
|
||||
skip_install = true
|
||||
|
|
Loading…
Reference in New Issue