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

如何在Ansible Playbook中访问组内其他主机私有IP部署sshfs

解决Ansible双向sshfs挂载时获取组内另一台主机私有IP的方法

方法一:通过Ansible事实(gather_facts)动态获取私有IP

  1. 确保Playbook启用事实收集(默认已启用,若关闭需显式开启):
- name: 配置双向sshfs挂载
  hosts: cloudalpine
  gather_facts: yes
  tasks:
  1. 添加任务提取组内另一台主机的私有IP:
- name: 提取组内对等主机的私有IP
  set_fact:
    peer_private_ip: "{{ groups['cloudalpine'] | difference([inventory_hostname]) | map('extract', hostvars, 'ansible_default_ipv4.address') | first }}"
  • 说明:
    • groups['cloudalpine']:获取目标组的所有主机列表
    • difference([inventory_hostname]):排除当前执行任务的主机,仅保留组内其他主机
    • map('extract', hostvars, 'ansible_default_ipv4.address'):从Ansible主机变量中提取对应主机的私有IP(若私有IP不在默认网卡,可替换为对应网卡变量,如ansible_eth1.ipv4.address,可通过ansible -m setup <主机名>查看所有事实变量确认)
    • first:因组内仅两台主机,取第一个结果即为对等主机IP
  1. 在docker_volume任务中使用该变量:
- name: 创建sshfs Docker卷
  docker_volume:
    volume_name: "sshvolume"
    use_ssh_client: true
    driver: vieux/sshfs
    driver_options:
      IdentityFile: "{{ lookup('file', ansible_ssh_private_key_file) }}"
      port: 22
      sshcmd: "<username>@{{ peer_private_ip }}:/etc/docker/storage"

方法二:手动在主机清单中定义私有IP(更稳定)

  1. 修改hosts文件,为每个主机添加私有IP变量:
--- # hosts
...
        cloud:
          children:
            cloudalpine:
              hosts:
                web-alpine-1:
                  ansible_host: 公网IP
                  private_ip: 私有IP1
                web-alpine-2:
                  ansible_host: 公网IP
                  private_ip: 私有IP2
  1. 在Playbook中提取对等主机的私有IP:
- name: 提取组内对等主机的私有IP
  set_fact:
    peer_private_ip: "{{ groups['cloudalpine'] | difference([inventory_hostname]) | map('extract', hostvars, 'private_ip') | first }}"
  1. 后续docker_volume任务同方法一,直接使用{{ peer_private_ip }}即可

额外注意事项

  • 确保两台主机之间可通过私有IP互通,防火墙需开放22端口
  • 确认SSH密钥已在两台主机间配置免密登录,避免挂载时需要输入密码
  • 若使用非默认SSH端口,需调整driver_options中的port参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:40:15