feat(scripts): deploy helper scripts
Deploy arbitrary helper scripts to use them in configuration file
This commit is contained in:
parent
a82e3efa7c
commit
5fc37fa6fb
@ -57,6 +57,11 @@ Installs the keepalived package.
|
|||||||
^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
This state manages the file ``keepalived.conf`` under ``/etc/keepalived`` (template found in "keepalived/files"). The configuration is populated by values in "keepalived/map.jinja" based on the package's default values (and RedHat, Debian, Suse and Arch family distribution specific values), which can then be overridden by values of the same name in pillar.
|
This state manages the file ``keepalived.conf`` under ``/etc/keepalived`` (template found in "keepalived/files"). The configuration is populated by values in "keepalived/map.jinja" based on the package's default values (and RedHat, Debian, Suse and Arch family distribution specific values), which can then be overridden by values of the same name in pillar.
|
||||||
|
|
||||||
|
``keepalived.scripts``
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Put arbitrary helper scripts on the minion. Default scripts location: ``/etc/keepalived``
|
||||||
|
This state can deploy script, set its permissions like file mode, user and group, but it won't create new user / group if they do not exist.
|
||||||
|
|
||||||
``keepalived.service``
|
``keepalived.service``
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
This state ensures that keepalived service is running.
|
This state ensures that keepalived service is running.
|
||||||
|
@ -4,11 +4,13 @@
|
|||||||
{#- Get the `tplroot` from `tpldir` #}
|
{#- Get the `tplroot` from `tpldir` #}
|
||||||
{%- set tplroot = tpldir.split('/')[0] %}
|
{%- set tplroot = tpldir.split('/')[0] %}
|
||||||
{%- set sls_package_install = tplroot ~ '.package.install' %}
|
{%- set sls_package_install = tplroot ~ '.package.install' %}
|
||||||
|
{%- set sls_scripts_manage = tplroot ~ '.scripts.manage' %}
|
||||||
{%- from tplroot ~ "/map.jinja" import keepalived with context %}
|
{%- from tplroot ~ "/map.jinja" import keepalived with context %}
|
||||||
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- {{ sls_package_install }}
|
- {{ sls_package_install }}
|
||||||
|
- {{ sls_scripts_manage }}
|
||||||
|
|
||||||
keepalived-config-file-file-managed:
|
keepalived-config-file-file-managed:
|
||||||
file.managed:
|
file.managed:
|
||||||
|
@ -9,3 +9,5 @@ keepalived:
|
|||||||
config:
|
config:
|
||||||
global_defs:
|
global_defs:
|
||||||
smtp_server: localhost
|
smtp_server: localhost
|
||||||
|
scripts_dir: /etc/keepalived
|
||||||
|
scripts: {}
|
||||||
|
@ -3,5 +3,6 @@
|
|||||||
|
|
||||||
include:
|
include:
|
||||||
- .package
|
- .package
|
||||||
|
- .scripts
|
||||||
- .config
|
- .config
|
||||||
- .service
|
- .service
|
||||||
|
5
keepalived/scripts/init.sls
Normal file
5
keepalived/scripts/init.sls
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=sls
|
||||||
|
|
||||||
|
include:
|
||||||
|
- .manage
|
48
keepalived/scripts/manage.sls
Normal file
48
keepalived/scripts/manage.sls
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=sls
|
||||||
|
|
||||||
|
{#- Get the `tplroot` from `tpldir` #}
|
||||||
|
{%- set tplroot = tpldir.split('/')[0] %}
|
||||||
|
{%- set sls_package_install = tplroot ~ '.package.install' %}
|
||||||
|
{%- from tplroot ~ "/map.jinja" import keepalived with context %}
|
||||||
|
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- {{ sls_package_install }}
|
||||||
|
|
||||||
|
{#- Don't create scripts_dir if no scripts defined #}
|
||||||
|
{%- if 'scripts' in keepalived and keepalived.scripts %}
|
||||||
|
keepalived-scripts-manage-file-directory:
|
||||||
|
file.directory:
|
||||||
|
- name: {{ keepalived.scripts_dir }}
|
||||||
|
- makedirs: true
|
||||||
|
- require:
|
||||||
|
- sls: {{ sls_package_install }}
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
|
{%- for script,data in keepalived.scripts|dictsort %}
|
||||||
|
{%- set ensure = data.get('ensure', present) %}
|
||||||
|
{%- if ensure == 'present' %}
|
||||||
|
keepalived-scripts-manage-file-managed-{{ script }}:
|
||||||
|
file.managed:
|
||||||
|
- name: {{ data.get('dst_file', keepalived.scripts_dir ~ '/' ~ script) }}
|
||||||
|
- user: {{ data.get('user', 'root') }}
|
||||||
|
- group: {{ data.get('group', 'root') }}
|
||||||
|
- mode: {{ data.get('mode', '755') }}
|
||||||
|
- template: {{ data.get('template_engine', 'jinja') }}
|
||||||
|
{%- if 'contents' in data %}
|
||||||
|
- contents: |
|
||||||
|
{{ data.contents|indent(width=8) }}
|
||||||
|
{%- elif 'template_file' in data %}
|
||||||
|
- source: {{ files_switch([data.template_file]) }}
|
||||||
|
- context:
|
||||||
|
data: {{ data.context|tojson }}
|
||||||
|
{%- endif %}
|
||||||
|
- require:
|
||||||
|
- sls: {{ sls_package_install }}
|
||||||
|
{%- elif ensure == 'absent' %}
|
||||||
|
keepalived-scripts-manage-file-absent-{{ script }}:
|
||||||
|
file.absent:
|
||||||
|
- name: {{ data.get('dst_file', keepalived.scripts_dir ~ '/' ~ script) }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endfor %}
|
@ -148,3 +148,34 @@ keepalived:
|
|||||||
script: '"killall -0 apache"'
|
script: '"killall -0 apache"'
|
||||||
interval: 2
|
interval: 2
|
||||||
weight: 10
|
weight: 10
|
||||||
|
# put helper scripts on the minon
|
||||||
|
# defaut directory where scripts will be saved if full path not specified
|
||||||
|
scripts_dir: /etc/keepalived
|
||||||
|
scripts:
|
||||||
|
# item name, will be used as file name if full path not specified
|
||||||
|
check_sshd.sh:
|
||||||
|
# present - create script
|
||||||
|
# absent - remove file
|
||||||
|
ensure: present
|
||||||
|
# user and group for script file, default is root:root
|
||||||
|
# note: it's required to use existing user and group
|
||||||
|
user: root
|
||||||
|
group: root
|
||||||
|
# file mode, default is 755
|
||||||
|
mode: '755'
|
||||||
|
# full path for script, optional
|
||||||
|
# if not defined "scripts_dir + '/' + script" will be used as file name
|
||||||
|
dst_file: /etc/keepalived/check_sshd.sh
|
||||||
|
# 'contents' have more priority than 'template_file',
|
||||||
|
# if 'contents' present, 'template_file' won't be used,
|
||||||
|
# but one of them is mandatory
|
||||||
|
contents: |
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
pidof sshd
|
||||||
|
# source template for script
|
||||||
|
template_file: check_sshd.sh
|
||||||
|
# template engine to use for rendering, default is jinja
|
||||||
|
template_engine: jinja
|
||||||
|
# dict with arbitrary data that will be passed to template as 'data' variable
|
||||||
|
context:
|
||||||
|
foo: bar
|
||||||
|
Loading…
Reference in New Issue
Block a user