【问题标题】:Hashicorp Vault unsealing error through AnsibleHashicorp Vault 通过 Ansible 解封错误
【发布时间】:2019-05-03 17:23:21
【问题描述】:

我正在尝试通过 Ansible 部署 Hashicorp Vault。我已经设法安装它并进行初始设置并生成 5 个解封密钥以及根令牌。但是,当我尝试通过 ansible 解封它时出现错误。我已经尝试了各种方法来让它工作,但每次我得到一个超时错误。我什至无法通过终端运行它,我得到了同样的错误。以下是我尝试解封 Vault 的所有不同方法:

方法一

- name: unseal vault
  uri:
    url: "http://172.0.0.1:8200/v1/sys/unseal"
    method: PUT
    body: "{{ item }}"
    body_format: json
    return_content: yes
    status_code: 200
  become: no
  loop:
    - "{{ key3.stdout }}"
    - "{{ key4.stdout }}"
    - "{{ key5.stdout }}"

方法二:

 - name: unseal vault 1
   shell: |
     vault operator unseal {{ key4.stdout }} 
     vault operator unseal {{ key5.stdout }}
     vault operator unseal {{ key3.stdout }}
   environment:
     VAULT_ADDR: "http://172.0.0.1:8200"

方法3重复3次:

 - name: unseal the vault
   become: yes
   command: vault operator unseal {{ key4.stdout }}
   environment:
     VAULT_ADDR: "http://172.0.0.1:8200"

我已验证我从文件中获取的关键变量是正确的。

这是我为方法 1 得到的错误:

failed: [172.26.1.238] (item=2q2h3y6XsztNEToISMADvbZ5XOugvi7NMHkfiarQq8bN) => {"changed": false, "content": "", "item": "2q2h3y6XsztNEToISMADvbZ5XOugvi7NMHkfiarQq8bN", "msg": "Status code was -1 and not [200]: Request failed: <urlopen error timed out>", "redirected": false, "status": -1, "url": "http://172.0.0.1:8200/v1/sys/unseal"}

这是我在方法 2 中得到的错误:

fatal: [172.26.1.238]: FAILED! => {"changed": true, "cmd": "vault operator unseal jwmGkN2O5t0JvAI2+82I9WAJuEL1PEG7sbkk8lmao+2B\n vault operator unseal 2q2h3y6XsztNEToISMADvbZ5XOugvi7NMHkfiarQq8bN\n vault operator unseal J74KbqOcqi6CBAB95PRy9kZF77Q7T2XAFWd7amQk1uP+", "delta": "0:01:30.078433", "end": "2018-12-02 00:53:45.609747", "msg": "non-zero return code", "rc": 2, "start": "2018-12-02 00:52:15.531314", "stderr": "Error unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout\nError unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout\nError unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout", "stderr_lines": ["Error unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/otimeout", "Error unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout", "Error unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout"], "stdout": "", "stdout_lines": []}

这是我在方法 3 中得到的错误:

fatal: [172.26.1.238]: FAILED! => {"changed": true, "cmd": ["vault", "operator", "unseal", "jwmGkN2O5t0JvAI2+82I9WAJuEL1PEG7sbkk8lmao+2B"], "delta": "0:00:30.025966", "end": "2018-12-02 00:58:28.997154", "msg": "non-zero return code", "rc": 2, "start": "2018-12-02 00:57:58.971188", "stderr": "Error unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout", "stderr_lines": ["Error unsealing: Put http://172.0.0.1:8200/v1/sys/unseal: dial tcp 172.0.0.1:8200: i/o timeout"], "stdout": "", "stdout_lines": []}

对我可能做错了什么有什么想法吗?我试图遵循一些在线指南以及来自 GitHub 的其他人的代码,但似乎没有任何效果。任何帮助将不胜感激

谢谢

【问题讨论】:

  • 五个不同的中的三个应该手动、单独地进行开封。如果您在一个地方有一定数量的解封密钥,那么您就是在滥用它们。因此,您可能无法让 Ansible 自动解封 Vault。
  • @DavidMaze 感谢您的回复。我理解这是第一次设置我们希望 Ansible 为我们解封 Vault。存储密钥的文件被移动和删除,因此保持安全。另一个问题是我无法通过终端运行相同的命令来解封 Vault。当然,这应该是我应该能够做到的。

标签: ansible hashicorp-vault


【解决方案1】:

所以这很尴尬,但我认为这可能会帮助人们尝试做同样的事情。所以我可以确认方法 2 确实有效。其他的也可能工作,但我没有测试过它们。我唯一需要更改的就是将 VAULT_ADDR 值更改为 127.0.0.1:8200 而不是 172.0.0.1:8200。愚蠢的错误,但它花了我超过 2 天的时间来锻炼。所以我希望其他人能从中吸取教训。

谢谢

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多