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

如何在Ansible中调用Azure Key Vault密钥作为创建用户的密码变量

操作步骤

1. 前置依赖检查

  • 确保已安装Azure官方Ansible集合:ansible-galaxy collection install azure.azcollection
  • 确保运行Ansible的身份(服务主体、托管身份、本地Azure CLI登录账号)拥有对应Azure Key Vault的**密钥获取(Get)**权限
  • 提前在Key Vault中创建好存储用户密码的密钥,记录密钥名称和Key Vault名称

2. Playbook完整配置示例

先通过Azure密钥库模块拉取密钥,再调用用户创建模块传入对应值即可,注意Ansible的user模块password参数要求传入/etc/shadow格式的哈希值,不能直接使用明文密码:

---
- name: 拉取Key Vault密钥创建系统用户
  hosts: 你的目标主机分组
  gather_facts: false
  tasks:
    # 第一步:从Azure Key Vault拉取密码,任务在本地执行
    - name: 获取用户密码密钥
      azure.azcollection.azure_rm_keyvaultsecret_info:
        vault_uri: "https://<你的Key Vault名称>.vault.azure.net/"
        name: "<存储密码的密钥名称>"
      register: kv_user_password
      delegate_to: localhost

    # 第二步:创建系统用户,密码自动做哈希处理
    - name: 创建业务系统用户
      ansible.builtin.user:
        name: username
        uid: UID
        group: grpname
        shell: /bin/bash
        comment: "test user"
        password: "{{ kv_user_password.secrets[0].secret | password_hash('sha512') }}"

3. 注意事项

  • 如果你已经提前把哈希后的sha512格式密码存储到了Key Vault中,可以去掉password_hash过滤器,直接写password: "{{ kv_user_password.secrets[0].secret }}"
  • delegate_to: localhost参数必须配置,避免在没有Azure访问权限的目标主机上执行密钥拉取操作
  • 若使用服务主体认证,可以在拉取密钥的任务中额外传入client_id、client_secret、tenant参数,也可以提前通过环境变量配置Azure认证信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:24:02