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

Ansible如何将首个playbook通过vars_prompt获取的密码传给导入的第二个playbook

Ansible跨独立Playbook共享vars_prompt输入密码的最优方案

最优方案采用Ansible原生set_stats模块实现,该模块专为跨Play、跨import_playbook场景共享变量设计,无需将密码写入外部文件,安全性更高,完全适配两个Play运行在不同主机组无法合并的场景。

改造步骤

  • 第一步:修改第一个Playbook,在现有任务后新增set_stats任务,将交互获取的密码设为全局统计变量
---
- name: 安装PCS集群
  hosts: cluster_nodes
  vars_prompt:
    - name: password
      prompt: 输入HACLUSTER用户的密码
  tasks:
    - name: 配置hacluster用户密码
      user:
        name: hacluster
        password: "{{ password | password_hash('sha512') }}"
    # 新增以下任务共享密码到全局
    - name: 共享hacluster密码到全局
      ansible.builtin.set_stats:
        data:
          shared_hacluster_password: "{{ password }}"
        per_host: no  # 设为全局变量,所有Play/主机均可访问
  • 第二步:第二个Playbook直接引用该全局变量即可使用,无需额外配置
- name: 配置集群
  hosts: 172.17.254.3
  vars:
    cluster_nodes:
      - node1.domain.com
      - node2.domain.com
  tasks:
    - name: 集群节点认证
      shell: "pcs host auth -u hacluster -p {{ shared_hacluster_password }}  {{ cluster_nodes | join(' ') }}"
      no_log: true # 可选,避免密码输出到运行日志中

注意事项

  • 该方案仅在同一次Ansible运行生命周期内有效,完全适配import_playbook串联多个独立Playbook的使用场景
  • 原示例Play2中存在变量名不一致问题(vars定义cluster_nodes,shell中调用ha_nodes),上述代码已做统一修正

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:06:03