kolla-ansible/ansible/roles/kibana/tasks/migrate-kibana-index.yml
2020-05-14 09:52:29 +00:00

112 lines
3.3 KiB
YAML

---
- name: Set fact for Elasticsearch URL
set_fact:
elasticsearch_url: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ elasticsearch_port }}"
- name: Wait for Elasticsearch
become: true
kolla_toolbox:
module_name: uri
module_args:
url: "{{ elasticsearch_url }}"
delegate_to: "{{ groups['elasticsearch'][0] }}"
run_once: true
retries: 10
delay: 5
register: result
until: ('status' in result) and result.status == 200
- name: Check state of migration
become: true
kolla_toolbox:
module_name: uri
module_args:
url: "{{ elasticsearch_url }}/.kibana/_mappings/doc"
status_code: [200, 404]
delegate_to: "{{ groups['elasticsearch'][0] }}"
run_once: true
register: kibana_6_index
# The official procedure for migrating the Kibana index:
# https://www.elastic.co/guide/en/kibana/6.x/migrating-6.0-index.html
- name: Migrate Kibana index to 6.x
block:
- name: Set .kibana index to read-only
become: true
kolla_toolbox:
module_name: uri
module_args:
url: "{{ elasticsearch_url }}/.kibana/_settings"
method: PUT
status_code: 200
return_content: yes
body: |
{
"index.blocks.write": true
}
body_format: json
delegate_to: "{{ groups['elasticsearch'][0] }}"
run_once: true
- name: Create .kibana-6 index
become: true
kolla_toolbox:
module_name: uri
module_args:
url: "{{ elasticsearch_url }}/.kibana-6"
method: PUT
status_code: 200
return_content: yes
body: "{{ lookup('file', 'kibana-6-index.json') }}"
body_format: json
delegate_to: "{{ groups['elasticsearch'][0] }}"
run_once: true
- name: Reindex .kibana into .kibana-6
become: true
kolla_toolbox:
module_name: uri
module_args:
url: "{{ elasticsearch_url }}/_reindex"
method: POST
status_code: 200
return_content: yes
body: |
{
"source": {
"index": ".kibana"
},
"dest": {
"index": ".kibana-6"
},
"script": {
"inline": "ctx._source = [ ctx._type : ctx._source ]; ctx._source.type = ctx._type; ctx._id = ctx._type + \":\" + ctx._id; ctx._type = \"doc\"; ", # noqa 204
"lang": "painless"
}
}
body_format: json
delegate_to: "{{ groups['elasticsearch'][0] }}"
run_once: true
- name: Alias .kibana-6 to .kibana and remove legacy .kibana index
become: true
kolla_toolbox:
module_name: uri
module_args:
url: "{{ elasticsearch_url }}/_aliases"
method: POST
status_code: 200
return_content: yes
body: |
{
"actions" : [
{ "add": { "index": ".kibana-6", "alias": ".kibana" } },
{ "remove_index": { "index": ".kibana" } }
]
}
body_format: json
delegate_to: "{{ groups['elasticsearch'][0] }}"
run_once: true
when: ('status' in kibana_6_index) and kibana_6_index.status != 200