Keystore manager for ES (for semi specific environment, see details)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ksm.py
readme.md
requirements.txt
setup.py

readme.md

es-ksm

Keystore manager of sorts for Elasticsearch (given that you're using bare metal hosts for your nodes and using the puppet module with CentOS, otherwise you'll have to make minor modifications). Give it a cluster API, the verb and other required params and it'll reach out to the keystore(s) where applicable.

Used with CentOS 7.x with nodes setup on bare metal hosts using forge module for Elasticsearch, tested against 5/6.x (up to 6.4.x) clusters. You may need to make modifications if using it outside this configuration.

Usage

usage: ksm.py [-h] [--input-file [INPUT_FILE]] --es-host ES_HOST
              [--es-user ES_USER] [--es-pass ES_PASS]
              {add,add-file,remove,list,create} [key_value [key_value ...]]

positional arguments:
  {add,add-file,remove,list,create}
  key_value             key (and value if applicable in the form of key=value)

optional arguments:
  -h, --help            show this help message and exit
  --input-file [INPUT_FILE]
                        file for add-file verb
  --es-host ES_HOST     es api
  --es-user ES_USER     es user
  --es-pass ES_PASS     es pass

Examples

Doing some adding/removing/listing.

$ es-ksm add something=else else=something --es-host https://es-stage-api.example.com
Password: 
es-stage_client10 something=else ✔
es-stage_client07 something=else ✔
es-stage_data04   something=else ✔
es-stage_client06 something=else ✔
es-stage_data05   something=else ✔
es-stage_data03   something=else ✔
es-stage_client08 something=else ✔
es-stage_data02   something=else ✔
es-stage_data01   something=else ✔
es-stage_client09 something=else ✔
es-stage_master01 something=else ✔
es-stage_master03 something=else ✔
es-stage_master05 something=else ✔
es-stage_master02 something=else ✔
es-stage_master04 something=else ✔
es-stage_client10 else=something ✔
es-stage_client07 else=something ✔
es-stage_data04   else=something ✔
es-stage_client06 else=something ✔
es-stage_data05   else=something ✔
es-stage_data03   else=something ✔
es-stage_data01   else=something ✔
es-stage_data02   else=something ✔
es-stage_client08 else=something ✔
es-stage_client09 else=something ✔
es-stage_master01 else=something ✔
es-stage_master03 else=something ✔
es-stage_master05 else=something ✔
es-stage_master02 else=something ✔
es-stage_master04 else=something ✔
$ es-ksm remove something else --es-host https://es-stage-api.example.com
Password: 
es-stage_data04   ✔
es-stage_client10 ✔
es-stage_client07 ✔
es-stage_client06 ✔
es-stage_data01   ✔
es-stage_data03   ✔
es-stage_data05   ✔
es-stage_data02   ✔
es-stage_client08 ✔
es-stage_client09 ✔
es-stage_master01 ✔
es-stage_master02 ✔
es-stage_master03 ✔
es-stage_master05 ✔
es-stage_master04 ✔
$ es-ksm list --es-host https://es-stage-api.example.com                 
Password: 
es-stage_client07:
 - keystore.seed
 - s3.client.default.endpoint
 - s3.client.minio.endpoint
es-stage_client10:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_client06:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_data04:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_client08:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_data05:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_data01:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_master01:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_client09:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_data02:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_data03:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_master03:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_master05:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_master02:
 - keystore.seed
 - s3.client.minio.endpoint
es-stage_master04:
 - keystore.seed
 - s3.client.minio.endpoint

Todo

  • maybe check the input arguments for -Des.path.conf=... and use that path instead? Might be more reliable than assuming the path based on the node name