# Vault 通过 Nomad 部署指南 本文档提供了使用 Nomad 的 exec 驱动部署 HashiCorp Vault 的详细步骤,类似于 Consul 的部署方式。 ## 部署架构 - **驱动方式**:使用 Nomad 的 `exec` 驱动 - **节点分布**:在三个节点上部署(kr-master、us-ash3c、bj-warden) - **存储后端**:使用本地 Consul 作为存储后端 - **网络设置**:API 端口为 8200,集群通信端口为 8201 ## 自动部署方法 我们提供了一个自动化脚本来简化部署过程。该脚本会: 1. 使用 Ansible 在所有节点上安装 Vault 2. 通过 Nomad 部署 Vault 服务 3. 初始化和解封 Vault(如果需要) ### 使用自动部署脚本 ```bash # 确保脚本有执行权限 chmod +x scripts/deploy_vault.sh # 运行部署脚本 ./scripts/deploy_vault.sh ``` 脚本执行完成后,Vault 将在主节点上初始化并解封。您需要在其他节点上手动执行解封操作。 ## 手动部署步骤 如果您想手动部署,请按照以下步骤操作: ### 1. 安装 Vault 使用 Ansible 在所有节点上安装 Vault: ```bash ansible-playbook -i configuration/inventories/production/vault.ini configuration/playbooks/install/install_vault.yml ``` ### 2. 部署 Vault 服务 使用 Nomad 部署 Vault 服务: ```bash nomad job run jobs/vault-cluster-exec.nomad ``` ### 3. 初始化 Vault 在一个节点上初始化 Vault: ```bash export VAULT_ADDR='http://127.0.0.1:8200' vault operator init -key-shares=5 -key-threshold=3 ``` 请安全保存生成的解封密钥和根令牌! ### 4. 解封 Vault 在每个节点上解封 Vault: ```bash export VAULT_ADDR='http://127.0.0.1:8200' vault operator unseal <解封密钥1> vault operator unseal <解封密钥2> vault operator unseal <解封密钥3> ``` ## 验证部署 验证 Vault 状态: ```bash export VAULT_ADDR='http://127.0.0.1:8200' vault status ``` ## 配置文件说明 ### Nomad 作业文件 `jobs/vault-cluster-exec.nomad` 定义了 Vault 服务的 Nomad 作业配置,使用 exec 驱动在三个节点上部署 Vault。 ### Ansible Playbook `configuration/playbooks/install/install_vault.yml` 负责在目标节点上安装 Vault 软件包和创建必要的目录结构。 ## 故障排除 ### Vault 无法启动 - 检查 Nomad 作业状态:`nomad job status vault-cluster-exec` - 检查 Nomad 分配日志:`nomad alloc logs ` - 确保 Consul 正在运行:`consul members` ### Vault 无法解封 - 确保使用正确的解封密钥 - 检查 Vault 状态:`vault status` - 检查 Consul 中的 Vault 数据:`consul kv get -recurse vault/` ## 后续步骤 成功部署 Vault 后,您可能需要: 1. 配置访问策略 2. 启用密钥引擎 3. 与 Nomad 集成 4. 配置审计日志 5. 设置自动解封机制(生产环境) 请参考 `docs/vault/vault_setup_guide.md` 获取更多信息。