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

如何在GitLab中仅加密Ansible主机文件的ansible_ssh_password并传值

仅加密Ansible主机文件中的密码值并在GitLab中使用

一、加密单个密码值(替代整个文件加密)

你可以用Ansible Vault的encrypt_string命令单独加密ansible_ssh_password的明文值,再把加密内容直接写入主机文件:

  1. 执行以下命令生成加密密码串(替换san123为你的实际密码):
ansible-vault encrypt_string 'san123' --name 'ansible_ssh_password'
  1. 命令会输出类似下方的加密块,复制这段内容:
ansible_ssh_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          32313038363432373635393831343938343736363835333332393634373238363633373334343932
          3132343836373436303736333734353738353631333934350a3832353331373032323837343635
          3735383539303732353331373236383139373837343332323133303137393932323835383737
          3034333835333939340a30333438353738303831373937323133323933383133303637353834
          3038313633323736393335393234313638303233333533363534383034363636333736363533
  1. 替换主机文件里ansible_ssh_password="{{ ssh_pass }}"这一行,最终主机文件内容如下:
[aix]
tusk12
raid12
[aix:vars]
ansible_ssh_user=San
ansible_ssh_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          32313038363432373635393831343938343736363835333332393634373238363633373334343932
          3132343836373436303736333734353738353631333934350a3832353331373032323837343635
          3735383539303732353331373236383139373837343332323133303137393932323835383737
          3034333835333939340a30333438353738303831373937323133323933383133303637353834
          3038313633323736393335393234313638303233333533363534383034363636333736363533
ansible_connection=ssh

二、在GitLab中配置并使用加密密码

1. 存储Vault密码到GitLab CI/CD变量

  • 进入GitLab项目,依次点击Settings > CI/CD > Variables
  • 点击Add variable,设置:
    • Key:ANSIBLE_VAULT_PASSWORD
    • Value:你加密密码时用的Vault密码
    • 勾选Mask variable(防止日志泄露明文),如需限制分支访问可勾选Protect variable

2. 在GitLab CI/CD任务中调用Ansible

在项目的.gitlab-ci.yml中添加任务,有两种方式提供Vault密码:

方式一:使用密码文件(兼容所有Ansible版本)

deploy_to_aix:
  stage: deploy
  script:
    # 将GitLab变量写入临时密码文件
    - echo "$ANSIBLE_VAULT_PASSWORD" > .vault_pass
    # 执行Ansible命令并指定密码文件
    - ansible-playbook your_deploy_playbook.yml --vault-password-file .vault_pass
    # 清理临时文件
    - rm .vault_pass

方式二:直接使用环境变量(Ansible 2.4+ 支持)

Ansible会自动读取ANSIBLE_VAULT_PASSWORD环境变量作为Vault密码,无需额外文件:

deploy_to_aix:
  stage: deploy
  script:
    - ansible-playbook your_deploy_playbook.yml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:31:00