Template management with files - no nasty shell commands

This commit is contained in:
Dale McDiarmid 2016-08-30 10:38:54 +01:00
parent 0aa00b477b
commit fbfbb66d56
2 changed files with 17 additions and 9 deletions

View file

@ -1,6 +1,7 @@
__author__ = 'dale mcdiarmid' __author__ = 'dale mcdiarmid'
import re import re
import os.path
def modify_list(values=[], pattern='', replacement='', ignorecase=False): def modify_list(values=[], pattern='', replacement='', ignorecase=False):
''' Perform a `re.sub` on every item in the list''' ''' Perform a `re.sub` on every item in the list'''
@ -28,9 +29,16 @@ def extract_role_users(users={}):
return role_users return role_users
def filename(filename=''):
return os.path.splitext(os.path.basename(filename))[0]
class FilterModule(object): class FilterModule(object):
def filters(self): def filters(self):
return {'modify_list': modify_list, return {'modify_list': modify_list,
'append_to_list':append_to_list, 'append_to_list':append_to_list,
'array_to_str':array_to_str, 'array_to_str':array_to_str,
'extract_role_users':extract_role_users} 'extract_role_users':extract_role_users,
'filename':filename}
print filename('/etc/elasticsearch/templates/basic.json')

View file

@ -7,28 +7,28 @@
wait_for: port={{es_api_port}} delay=10 wait_for: port={{es_api_port}} delay=10
- name: Get template files - name: Get template files
shell: find . -maxdepth 1 -type f | sed "s#\./##" | sed "s/.json//" chdir=/etc/elasticsearch/templates find: paths="/etc/elasticsearch/templates" patterns="*.json"
register: resultstemplate register: templates
- name: Install templates without auth - name: Install templates without auth
uri: uri:
url: http://{{es_api_host}}:{{es_api_port}}/_template/{{item}} url: "http://{{es_api_host}}:{{es_api_port}}/_template/{{item.path | filename}}"
method: PUT method: PUT
status_code: 200 status_code: 200
body_format: json body_format: json
body: "{{ lookup('file', '/etc/elasticsearch/templates/'+item+'.json') }}" body: "{{ lookup('file', item.path) }}"
when: not es_enable_xpack or not es_xpack_features is defined or not '"shield" in es_xpack_features' when: not es_enable_xpack or not es_xpack_features is defined or not '"shield" in es_xpack_features'
with_items: "{{ resultstemplate.stdout_lines }}" with_items: "{{ templates.files }}"
- name: Install templates with auth - name: Install templates with auth
uri: uri:
url: http://{{es_api_host}}:{{es_api_port}}/_template/{{item}} url: "http://{{es_api_host}}:{{es_api_port}}/_template/{{item.path | filename}}"
method: PUT method: PUT
status_code: 200 status_code: 200
user: "{{es_api_basic_auth_username}}" user: "{{es_api_basic_auth_username}}"
password: "{{es_api_basic_auth_password}}" password: "{{es_api_basic_auth_password}}"
force_basic_auth: yes force_basic_auth: yes
body_format: json body_format: json
body: "{{ lookup('file', '/etc/elasticsearch/templates/'+item+'.json') }}" body: "{{ lookup('file', item.path) }}"
when: es_enable_xpack and es_xpack_features is defined and '"shield" in es_xpack_features' when: es_enable_xpack and es_xpack_features is defined and '"shield" in es_xpack_features'
with_items: "{{ resultstemplate.stdout_lines }}" with_items: "{{ templates.files }}"