local-elastic-docker
Version:
A package for creating / tearing down local Elasticsearch / Kibana single node clusters via Docker.
169 lines (145 loc) • 3.84 kB
JavaScript
const led = require('local-elastic-docker');
const es_version = '7.2.0';
const create_elastic_image = async image_name => {
await (new led.Image({
es_version,
name: image_name
})).create(true);
};
const create_kibana_image = async image_name => {
await (new led.Image({
es_version,
kibana: true,
name: image_name
})).create(true);
};
const create_elastic_container = async image_name => {
const node_name = `${image_name}-1`;
const child_container = new led.ChildContainer({
es_version,
hsize: 500,
image: image_name,
name: node_name,
port: 5000,
env: [
'discovery.type=single-node'
]
});
const tasks = child_container.create({ verbose: true });
tasks.container_mk.on_start().then(() => {
console.log(1);
});
tasks.container_mk.on_end().then(() => {
console.log(2);
}).catch(err => {
console.log(2.5, err);
});
tasks.elastic_ready.on_start().then(() => {
console.log(3);
});
tasks.elastic_ready.on_end().then(() => {
console.log(4);
});
// + other tasks ...
const container = await tasks.main.on_end();
console.log(5);
};
const create_kibana_container = async image_name => {
const node_name = `${image_name}-1`;
const container = new led.ChildContainer({
es_version,
cluster_name: 'kibana_cluster',
hsize: 500,
image: image_name,
kibana: true,
kibana_port: 6001,
name: node_name,
port: 5001,
env: [
'xpack.monitoring.collection.enabled=true',
'discovery.type=single-node'
]
// + other options ...
});
const tasks = container.create({
verbose: true,
kso: [
{
type: "visualization",
id: "99526ac0-9cc0-11e9-b6a0-2f4b9d6c6ed7",
attributes: {
description: "",
kibanaSavedObjectMeta: {
searchSourceJSON: "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"
},
title: "sumting",
uiStateJSON: "{}",
visState: "{\"title\":\"sumting\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(*)\",\"interval\":\"auto\"},\"aggs\":[]}"
},
references: [],
migrationVersion: {
visualization: "7.2.0"
},
updated_at: "2019-07-02T22:56:10.824Z",
version: "WzMsMV0="
},
{
type: "config",
id: "7.2.0",
attributes: {
buildNum: 24337,
"theme:darkMode": true
},
references: [],
updated_at: "2019-07-02T23:48:08.636Z",
version: "WzQsMV0="
}
],
scripts: {
calc_score: {
lang: 'painless',
source: 'Math.log(_score * 2) + params.my_modifier'
}
},
sm: {
users: {
mappings: { properties: { name: { type: 'keyword' } } },
settings: { number_of_shards: 1 }
}
}
});
tasks.kibana_ready.on_start().then(() => {
console.log(6);
});
tasks.kibana_ready.on_end().then(() => {
console.log(7);
});
tasks.kso_upload.on_end().then(r => {
console.log(8, r);
});
tasks.scripts_upload.on_end().then(r => {
console.log(9, r);
});
tasks.sm_upload.on_end().then(r => {
console.log(10, r);
});
// + other tasks ...
await tasks.main.on_end();
console.log(11);
};
const fetch_containers = async () => {
const containers = await led.Container.fetch_all();
console.log(12, containers);
};
const combo = async() => {
const es_image_name = 'dev-es';
const kib_image_name = 'dev-kibana';
const verbose = true;
await led.helpers.remove_containers(verbose);
await create_elastic_image(es_image_name);
await create_kibana_image(kib_image_name);
await create_elastic_container(es_image_name);
await create_kibana_container(kib_image_name);
await fetch_containers();
};
combo();