New role to create/update/delete hiera value during upgrade.
We need to override the cluster definition during upgrade, so that we can build a one node cluster followed by a two and three nodes cluster. Change-Id: Id55a4ea7f0e8a8d95a49ba93853cf7844d938f43 Implements: blueprint upgrades-with-os
This commit is contained in:
parent
75af95b78d
commit
de7df308e0
39
roles/tripleo-upgrade-hiera/README.md
Normal file
39
roles/tripleo-upgrade-hiera/README.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
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
roles/tripleo-upgrade-hiera/defaults/main.yml
Normal file
1
roles/tripleo-upgrade-hiera/defaults/main.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
tripleo_upgrade_hiera_file: /etc/puppet/hieradata/upgrade.json
|
@ -0,0 +1,35 @@
|
|||||||
|
- 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
|
6
roles/tripleo-upgrade-hiera/tasks/remove-all.yml
Normal file
6
roles/tripleo-upgrade-hiera/tasks/remove-all.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: delete the upgrade hiera file
|
||||||
|
file:
|
||||||
|
path: "{{tripleo_upgrade_hiera_file}}"
|
||||||
|
state: absent
|
||||||
|
become: yes
|
16
roles/tripleo-upgrade-hiera/tasks/remove.yml
Normal file
16
roles/tripleo-upgrade-hiera/tasks/remove.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
- name: ensure tripleo-upgrade hiera file exists
|
||||||
|
include_tasks: create-tripleo-upgrade-file.yml
|
||||||
|
|
||||||
|
- name: remove a tripleo-upgrade key
|
||||||
|
set_fact:
|
||||||
|
tripleo_upgrade_hiera_data_del: "{{ tripleo_upgrade_hiera_data_del|default({})|combine({item.key: item.value}) }}"
|
||||||
|
cacheable: no
|
||||||
|
when: item.key != tripleo_upgrade_key
|
||||||
|
with_dict: "{{ tripleo_upgrade_hiera_command.stdout | from_json | default({}) }}"
|
||||||
|
|
||||||
|
- 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
|
15
roles/tripleo-upgrade-hiera/tasks/set.yml
Normal file
15
roles/tripleo-upgrade-hiera/tasks/set.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
|
|
39
roles/tripleo-upgrade-hiera/test-playbook.yml
Normal file
39
roles/tripleo-upgrade-hiera/test-playbook.yml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
- 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
|
Loading…
Reference in New Issue
Block a user