Easy to use CLI tool to manage Elasticsearch, preventing long curl commands.
Project description
Esctl
A Command-Line Interface designed to ease Elasticsearch administration.
Key Features • Installation • How To Use • Examples • License • Developing
Esctl is a CLI tool for Elasticsearch. I designed it to shorten huge curl
commands Elasticsearch operators were running like :
curl -XPUT --user "john:doe" 'http://elasticsearch.example.com:9200/_cluster/settings' -d '{
"transient" : {
"cluster.routing.allocation.enable": "NONE"
}
}'
The equivalent with esctl
is
esctl cluster routing allocation enable none
Key Features
- Easy to use CLI rather than long curl commands (thanks to cliff)
- Cluster-level informations : stats, info, health, allocation explanation
- Node-level informations : list, hot threads, exclusion
- Cluster-level and index-level settings
_cat
API for allocation, plugins and thread pools- Index management : open, close, create, delete, list
- Per-module log configuration
- X-Pack APIs : users and roles
- Multiple output formats : table, csv, json, value, yaml
- Colored output !
- Run arbitrary pre-commands before issuing the HTTP call to Elasticsearch (like running
kubectl port-forward
for example)
Installation
Using PIP
pip install esctl
From source
pip install git+https://github.com/jeromepin/esctl.git
How To Use
Esctl relies on a ~/.esctlrc
file containing its config. This file is automatically created on the first start if it doesn't exists :
clusters:
bar:
servers:
- https://bar.example.com
users:
john-doe:
username: john
password: doe
contexts:
foo:
user: john-doe
cluster: bar
default-context: foo
Running pre-commands
Sometimes, you need to execute a shell command right before running the esctl
command. Like running a kubectl port-forward
in order to connect to your Kubernetes cluster.
There is a pre_commands
block inside the context which can take care of that :
clusters:
remote-kubernetes:
servers:
- http://localhost:9200
contexts:
my-distant-cluster:
cluster: remote-kubernetes
pre_commands:
- command: kubectl --context=my-kubernetes-context --namespace=elasticsearch port-forward svc/elasticsearch 9200
wait_for_exit: false
wait_for_output: Forwarding from
user: john-doe
Along with command
, you can pass two options :
wait_for_exit
(default:true
) : wait for the command to exit before continuing. Usually set tofalse
when the command is running in the foreground.wait_for_output
: ifwait_for_exit
isfalse
, look for a specific output in the command's stdout. The string to look-for is interpreted as a regular expression passed to Python's re.compile().
Examples
License
esctl
is licensed under the GNU GPLv3. See LICENCE file.
Developing
Install
make install
Run tests
make test
Format code
make fmt
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.