Как запустить Vault из моего приложения вместо интерфейса командной строки?

Я пытаюсь запустить службу Vault в моем приложении NodeJS. Использование CLI для использования Vault - это нормально, но мне нужно, чтобы он работал автоматически при запуске приложения. Я пробую это

    async started(ctx) {

        var options = {
            apiVersion: 'v1', // default
            endpoint: 'http://127.0.0.1:8500', // default

          };
           
            // get new instance of the client
            var vault = require("node-vault")(options);

            // init vault server
            vault.init({ secret_shares: 1, secret_threshold: 1 })
            .then( (result) => {
            var keys = result.keys;
            // set token for all following requests
            vault.token = result.root_token;
            // unseal vault server
            return vault.unseal({ secret_shares: 1, key: keys[0] })
            })
            .catch(console.error);

            // see if it is ok
            vault.status()
                .then (res => {
                  console.log('STATuuuuuuuuuuusS', res);
                  })
                  .catch((err) => {
                    console.log("errrrrrreur status");
                    console.error(err.message);
            });

Но у меня такая ошибка:

RequestError: Error: connect ECONNREFUSED 127.0.0.1:8500
[...]
  cause: Error: connect ECONNREFUSED 127.0.0.1:8500
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: 'ECONNREFUSED',
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 8500
  },

Если я запустил это раньше, это сработало vault server -config=config.hcl

Даже когда я его убиваю, кажется, что он работает без перезагрузки. Мне здесь что-то не хватает, конечно :) Мне интересно, должно ли node-vault запускать сервер Vault? Если нет, мне интересно, как запустить сервер Vault из приложения, а не из интерфейса командной строки?

Если вы знаете, как это сделать, или у вас есть подсказки, я все уши.

Николас


person nikubik    schedule 11.09.2020    source источник


Ответы (1)


Нет, обычно код не должен запускать сервер. Да, ваш код работает правильно. Если вы не запустили сервер, ошибка означает, что невозможно подключиться к указанному IP-адресу и порту, они закрыты. Сервер хранилища тут ни при чем, таким же поведением будет сервер базы данных или любой другой.

person Ivan Zhuravlev    schedule 11.09.2020
comment
Хорошо, большое спасибо за ответ! Полагаю, это то же самое для шага входа в систему, это не выполняется из кода? Но мне интересно, когда приложение будет развернуто, как запустится сервер Vault и как мы войдем в систему? - person nikubik; 12.09.2020
comment
Я не знаю, какую проблему вы пытаетесь решить. Полагаю, вам будет полезно взглянуть на этот пакет npmjs.com/package/moleculer-vault - person Ivan Zhuravlev; 13.09.2020
comment
Я пытаюсь использовать Vault для аутентификации пользователей в приложении микросервиса. Я уже пробовал использовать хранилище молекул, но так и не смог заставить его работать. Но если я запущу Хранилище вручную и войду в систему вручную, возможно, я так и сделаю. Но я думал, что молекулярное хранилище было интересно запустить для меня сервер Vault? - person nikubik; 14.09.2020
comment
Фактически, я застреваю на экране входа в систему с помощью токена. Конечно, я могу ввести токен, но мне нужно сделать это из приложения. И единственный работающий механизм, который я нахожу, - это команда CLI: вход в хранилище ... Любой эквивалент хранилища узлов !? простой узел? или даже эквивалент завитка? - person nikubik; 14.09.2020
comment
К сожалению, у меня недостаточно опыта работы с хранилищем, чтобы подсказать. - person Ivan Zhuravlev; 14.09.2020