Skip to content

Commit

Permalink
Backport PR elastic#6674
Browse files Browse the repository at this point in the history
  • Loading branch information
jbudz committed Jun 9, 2016
1 parent bc7bc22 commit 54e763c
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 11 deletions.
2 changes: 1 addition & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ module.exports = function (grunt) {

grunt.config.merge(config);

config.userScriptsDir = __dirname + '/build/userScripts';
config.packageScriptsDir = __dirname + '/tasks/build/package_scripts';
// ensure that these run first, other configs need them
config.services = require('./tasks/config/services')(grunt);
config.platforms = require('./tasks/config/platforms')(grunt);
Expand Down
14 changes: 9 additions & 5 deletions tasks/build/osPackages.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function (grunt) {
const exec = require('../utils/exec');
const targetDir = config.get('target');
const version = config.get('pkg.version');
const userScriptsDir = config.get('userScriptsDir');
const packageScriptsDir = config.get('packageScriptsDir');
const servicesByName = indexBy(config.get('services'), 'name');

grunt.registerTask('_build:osPackages', function () {
Expand All @@ -22,15 +22,19 @@ module.exports = function (grunt) {
'--package', targetDir,
'-s', 'dir', // input type
'--name', 'kibana',
'--description', 'Explore\ and\ visualize\ your\ Elasticsearch\ data.',
'--description', 'Explore\ and\ visualize\ your\ Elasticsearch\ data',
'--version', version,
'--url', 'https://www.elastic.co',
'--vendor', 'Elasticsearch,\ Inc.',
'--maintainer', 'Kibana Team\ \<info@elastic.co\>',
'--license', 'Apache\ 2.0',
'--after-install', resolve(userScriptsDir, 'installer.sh'),
'--after-remove', resolve(userScriptsDir, 'remover.sh'),
'--config-files', '/opt/kibana/config/kibana.yml'
'--after-install', resolve(packageScriptsDir, 'post_install.sh'),
'--before-install', resolve(packageScriptsDir, 'pre_install.sh'),
'--before-remove', resolve(packageScriptsDir, 'pre_remove.sh'),
'--after-remove', resolve(packageScriptsDir, 'post_remove.sh'),
'--config-files', '/opt/kibana/config/kibana.yml',
'--template-value', 'user=kibana',
'--template-value', 'group=kibana'
];

const files = buildDir + '/=/opt/kibana';
Expand Down
17 changes: 17 additions & 0 deletions tasks/build/package_scripts/post_install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/sh
set -e

user_check() {
getent passwd "$1" > /dev/null 2>&1
}

user_create() {
# Create a system user. A system user is one within the system uid range and
# has no expiration
useradd -r "$1"
}

if ! user_check "<%= user %>" ; then
user_create "<%= user %>"
fi
chown -R <%= user %>:<%= group %> /opt/kibana/optimize
42 changes: 42 additions & 0 deletions tasks/build/package_scripts/post_remove.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/sh
set -e

user_check() {
getent passwd "$1" > /dev/null 2>&1
}

user_remove() {
userdel "$1"
}

REMOVE_USER=false

case $1 in
# Includes cases for all valid arguments, exit 1 otherwise
# Debian
purge)
REMOVE_USER=true
;;

remove|failed-upgrade|abort-install|abort-upgrade|disappear|upgrade|disappear)
;;

# Red Hat
0)
REMOVE_USER=true
;;

1)
;;

*)
echo "post remove script called with unknown argument \`$1'" >&2
exit 1
;;
esac

if [ "$REMOVE_USER" = "true" ]; then
if user_check "<%= user %>" ; then
user_remove "<%= user %>"
fi
fi
14 changes: 14 additions & 0 deletions tasks/build/package_scripts/pre_install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/sh
set -e

if command -v systemctl >/dev/null && systemctl is-active kibana.service >/dev/null; then
systemctl --no-reload stop kibana.service
elif [ -x /etc/init.d/kibana ]; then
if command -v invoke-rc.d >/dev/null; then
invoke-rc.d kibana stop
elif command -v service >/dev/null; then
service kibana stop
else
/etc/init.d/kibana stop
fi
fi
16 changes: 16 additions & 0 deletions tasks/build/package_scripts/pre_remove.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/sh
set -e

echo -n "Stopping kibana service..."
if command -v systemctl >/dev/null && systemctl is-active kibana.service >/dev/null; then
systemctl --no-reload stop kibana.service
elif [ -x /etc/init.d/kibana ]; then
if command -v invoke-rc.d >/dev/null; then
invoke-rc.d kibana stop
elif command -v service >/dev/null; then
service kibana stop
else
/etc/init.d/kibana stop
fi
fi
echo " OK"
5 changes: 0 additions & 5 deletions tasks/build/pleaserun.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ module.exports = function createServices(grunt) {
const { resolve } = require('path');
const { appendFileSync } = require('fs');
const exec = require('../utils/exec');
const userScriptsDir = grunt.config.get('userScriptsDir');

grunt.registerTask('_build:pleaseRun', function () {
// TODO(sissel): Detect if 'pleaserun' is found, and provide a useful error
Expand All @@ -23,9 +22,5 @@ module.exports = function createServices(grunt) {
'/opt/kibana/bin/kibana'
]);
});

grunt.file.mkdir(userScriptsDir);
exec('please-manage-user', ['--output', userScriptsDir, 'kibana']);
appendFileSync(resolve(userScriptsDir, 'installer.sh'), 'chown kibana:kibana /opt/kibana/optimize');
});
};

0 comments on commit 54e763c

Please sign in to comment.