mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Merge pull request #7522 from elastic/jasper/backport/7457/4.x
[backport] PR #7457 to 4.x
This commit is contained in:
commit
145f24f3fc
11 changed files with 69 additions and 3 deletions
|
@ -5,6 +5,7 @@ const installer = require('./plugin_installer');
|
|||
const remover = require('./plugin_remover');
|
||||
const lister = require('./plugin_lister');
|
||||
const pluginLogger = require('./plugin_logger');
|
||||
const getConfig = require('../../server/path').getConfig;
|
||||
|
||||
export default function pluginCli(program) {
|
||||
function processCommand(command, options) {
|
||||
|
@ -43,7 +44,7 @@ export default function pluginCli(program) {
|
|||
.option(
|
||||
'-c, --config <path>',
|
||||
'Path to the config file',
|
||||
fromRoot('config/kibana.yml')
|
||||
getConfig()
|
||||
)
|
||||
.option(
|
||||
'-t, --timeout <duration>',
|
||||
|
|
|
@ -5,6 +5,7 @@ let { resolve } = require('path');
|
|||
let cwd = process.cwd();
|
||||
let src = require('requirefrom')('src');
|
||||
let fromRoot = src('utils/fromRoot');
|
||||
const getConfig = require('../../server/path').getConfig;
|
||||
|
||||
let canCluster;
|
||||
try {
|
||||
|
@ -35,7 +36,7 @@ module.exports = function (program) {
|
|||
.option(
|
||||
'-c, --config <path>',
|
||||
'Path to the config file, can be changed with the CONFIG_PATH environment variable as well',
|
||||
process.env.CONFIG_PATH || fromRoot('config/kibana.yml'))
|
||||
getConfig())
|
||||
.option('-p, --port <port>', 'The port to bind to', parseInt)
|
||||
.option('-q, --quiet', 'Prevent all logging except errors')
|
||||
.option('-Q, --silent', 'Prevent all logging')
|
||||
|
|
|
@ -6,6 +6,7 @@ let path = require('path');
|
|||
let utils = require('requirefrom')('src/utils');
|
||||
let fromRoot = utils('fromRoot');
|
||||
const randomBytes = require('crypto').randomBytes;
|
||||
const getData = require('../path').getData;
|
||||
|
||||
module.exports = () => Joi.object({
|
||||
pkg: Joi.object({
|
||||
|
@ -84,6 +85,10 @@ module.exports = () => Joi.object({
|
|||
initialize: Joi.boolean().default(true)
|
||||
}).default(),
|
||||
|
||||
path: Joi.object({
|
||||
data: Joi.string().default(getData())
|
||||
}).default(),
|
||||
|
||||
optimize: Joi.object({
|
||||
enabled: Joi.boolean().default(true),
|
||||
bundleFilter: Joi.string().default('!tests'),
|
||||
|
|
15
src/server/path/__tests__/index.js
Normal file
15
src/server/path/__tests__/index.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
import expect from 'expect.js';
|
||||
import path from '../';
|
||||
import { accessSync, R_OK} from 'fs';
|
||||
|
||||
describe('Default path finder', function () {
|
||||
it('should find a kibana.yml', () => {
|
||||
const configPath = path.getConfig();
|
||||
expect(() => accessSync(configPath, R_OK)).to.not.throwError();
|
||||
});
|
||||
|
||||
it('should find a data directory', () => {
|
||||
const dataPath = path.getData();
|
||||
expect(() => accessSync(dataPath, R_OK)).to.not.throwError();
|
||||
});
|
||||
});
|
31
src/server/path/index.js
Normal file
31
src/server/path/index.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
import { accessSync, R_OK} from 'fs';
|
||||
import { find } from 'lodash';
|
||||
import fromRoot from '../../utils/fromRoot';
|
||||
|
||||
const CONFIG_PATHS = [
|
||||
process.env.CONFIG_PATH,
|
||||
fromRoot('config/kibana.yml')
|
||||
].filter(Boolean);
|
||||
|
||||
const DATA_PATHS = [
|
||||
process.env.DATA_PATH,
|
||||
fromRoot('installedPlugins/.data'),
|
||||
'/var/lib/kibana'
|
||||
].filter(Boolean);
|
||||
|
||||
function findFile(paths) {
|
||||
const availablePath = find(paths, configPath => {
|
||||
try {
|
||||
accessSync(configPath, R_OK);
|
||||
return true;
|
||||
} catch (e) {
|
||||
//Check the next path
|
||||
}
|
||||
});
|
||||
return availablePath || paths[0];
|
||||
}
|
||||
|
||||
export default {
|
||||
getConfig: () => findFile(CONFIG_PATHS),
|
||||
getData: () => findFile(DATA_PATHS)
|
||||
};
|
|
@ -1,5 +1,6 @@
|
|||
module.exports = function (grunt) {
|
||||
grunt.registerTask('_build:installedPlugins', function () {
|
||||
grunt.file.mkdir('build/kibana/installedPlugins');
|
||||
grunt.file.mkdir('build/kibana/installedPlugins/.data');
|
||||
});
|
||||
};
|
||||
|
|
|
@ -42,7 +42,10 @@ export default (grunt) => {
|
|||
'--template-value', `user=${config.user}`,
|
||||
'--template-value', `group=${config.group}`,
|
||||
'--template-value', `optimizeDir=${config.path.home}/optimize`,
|
||||
'--template-value', `pluginsDir=${config.path.plugins}`
|
||||
'--template-value', `pluginsDir=${config.path.plugins}`,
|
||||
'--template-value', `dataDir=${config.path.data}`,
|
||||
//uses relative path to --prefix, strip the leading /
|
||||
'--exclude', `${config.path.home.slice(1)}/installedPlugins/.data`
|
||||
];
|
||||
const debOptions = [
|
||||
'-t', 'deb',
|
||||
|
@ -54,6 +57,7 @@ export default (grunt) => {
|
|||
];
|
||||
const args = [
|
||||
`${buildDir}/=${config.path.home}/`,
|
||||
`${buildDir}/installedPlugins/.data/=${config.path.data}/`,
|
||||
`${servicesByName.sysv.outputDir}/etc/=/etc/`,
|
||||
`${servicesByName.systemd.outputDir}/lib/=/lib/`
|
||||
];
|
||||
|
|
|
@ -15,3 +15,5 @@ if ! user_check "<%= user %>" ; then
|
|||
user_create "<%= user %>"
|
||||
fi
|
||||
chown -R <%= user %>:<%= group %> <%= optimizeDir %>
|
||||
chown <%= user %>:<%= group %> <%= dataDir %>
|
||||
chown <%= user %>:<%= group %> <%= pluginsDir %>
|
||||
|
|
|
@ -55,4 +55,8 @@ if [ "$REMOVE_DIRS" = "true" ]; then
|
|||
if [ -d "<%= pluginsDir %>" ]; then
|
||||
rm -rf "<%= pluginsDir %>"
|
||||
fi
|
||||
|
||||
if [ -d "<%= dataDir %>" ]; then
|
||||
rmdir --ignore-fail-on-non-empty "<%= dataDir %>"
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -14,6 +14,7 @@ export default (grunt) => {
|
|||
|
||||
const FOLDER_CONFIG = '/opt/kibana/config';
|
||||
const FOLDER_HOME = '/opt/kibana';
|
||||
const FOLDER_DATA = '/var/lib/kibana';
|
||||
const FOLDER_PLUGINS = `${FOLDER_HOME}/installedPlugins`;
|
||||
|
||||
const FILE_KIBANA_CONF = `${FOLDER_CONFIG}/kibana.yml`;
|
||||
|
@ -43,6 +44,7 @@ export default (grunt) => {
|
|||
version: VERSION,
|
||||
path: {
|
||||
conf: FOLDER_CONFIG,
|
||||
data: FOLDER_DATA,
|
||||
plugins: FOLDER_PLUGINS,
|
||||
home: FOLDER_HOME,
|
||||
kibanaBin: FILE_KIBANA_BINARY,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue