如何从我的应用而不是CLI运行Vault?

问题描述

我正在尝试在NodeJS应用中启动保险柜服务。 使用CLI使用保险柜是可以的, 但是我需要它在应用启动时自动工作。 我试试这个

    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服务器?如果没有,我想知道如何从应用程序而不是CLI启动Vault服务器?

如果您知道执行此操作的好方法或有线索,那么我无所不在。

尼古拉斯

解决方法

否,通常该代码不应启动服务器。 是的,您的代码正常工作。如果尚未启动服务器,则该错误表示无法连接到指定的IP地址和端口,它们已关闭。 保管库服务器与它无关,数据库服务器或任何其他服务器将具有相同的行为。