【发布时间】: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。当然,这应该是我应该能够做到的。