You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Ansible Playbook在Vagrant虚拟机内启动Vault服务器

问题根因

两个异常的触发逻辑非常明确:

  • 启动任务卡死是因为vault server -dev属于前台常驻进程,Ansible执行命令时默认会等待命令完全退出才会标记任务执行完成,服务进程持续运行就会导致任务一直挂起直到超时。
  • 执行vagrant ssh返回127错误是因为Ansible本身已经通过SSH直连到Vagrant虚拟机内部执行操作,虚拟机内部默认没有安装Vagrant程序,自然找不到对应命令,Playbook流程里完全不需要额外执行vagrant ssh步骤。
可行方案

方案1:异步后台启动(适合快速测试场景)

直接调整启动任务的执行逻辑,通过Ansible异步参数将Vault进程放到后台运行,不阻塞Playbook执行,同时追加端口检测确认服务就绪:

- name: Launch vault dev server in background
  become: true
  become_user: vagrant
  shell: |
    nohup vault server -dev -dev-listen-address=0.0.0.0:8200 > /home/vagrant/vault.log 2>&1 &
  async: 10
  poll: 0

- name: Verify vault service is reachable
  wait_for:
    port: 8200
    delay: 3
    timeout: 10

参数说明:async: 10搭配poll: 0会让Ansible把任务提交到后台后直接返回,不等待进程运行结果;服务启动日志和dev模式自动生成的root token都可以在/home/vagrant/vault.log文件中查看。

方案2:systemd托管服务(稳定场景推荐)

将Vault dev服务交给systemd托管,支持虚机重启后自动拉起,比手动后台启动更易维护:

  1. 首先下发systemd服务配置文件
- name: Deploy vault dev service config
  become: true
  copy:
    content: |
      [Unit]
      Description=HashiCorp Vault Dev Server
      After=network.target

      [Service]
      User=vagrant
      Group=vagrant
      ExecStart=/usr/bin/vault server -dev -dev-listen-address=0.0.0.0:8200
      Restart=on-failure
      StandardOutput=append:/home/vagrant/vault.log
      StandardError=append:/home/vagrant/vault.log

      [Install]
      WantedBy=multi-user.target
    dest: /etc/systemd/system/vault-dev.service
    mode: '0644'
  1. 重载系统服务配置并启动Vault
- name: Reload systemd configs
  become: true
  systemd:
    daemon_reload: true

- name: Start vault dev service and set auto-start
  become: true
  systemd:
    name: vault-dev.service
    state: started
    enabled: true

- name: Wait for vault port to be online
  wait_for:
    port: 8200
    host: 0.0.0.0
    delay: 2
    timeout: 15
注意事项
  • Vagrant的8200端口转发规则配置正确的前提下,服务启动后直接在宿主机访问http://127.0.0.1:8200即可打开Vault UI。
  • Vault dev模式所有数据存储在内存中,服务或虚机重启后所有数据会被清空,仅适用于开发测试场景,禁止用于生产环境。
  • 执行Playbook前可以通过vagrant ssh-config生成Ansible所需的inventory连接配置,避免连接权限问题。

内容的提问来源于stack exchange,提问作者dish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:09:20