Ansible中`–vault-password-file`的配置等效变量是什么?

94次阅读
没有评论

问题描述

在使用ansible-playbook时,可以使用--user=REMOTE_USER来定义SSH用户,还可以在主机或group_vars中定义ansible_ssh_user: REMOTE_USER
问题:在主机或group_vars目录中,需要定义哪个变量,以防止在运行ansible-playbook时必须定义--vault-password-file

解决方案

请注意以下操作可能存在版本差异,请根据自己的情况进行调整。

方案1

你可以在ansible.cfg或playbook中设置vault_password_file变量,用来存储vault密码文件的路径。这样,你在运行playbook时就不必每次都使用--vault-password-file开关了。以下是具体步骤:

  1. 打开你的ansible.cfg文件或playbook。
  2. 在文件中添加如下内容:
    yaml
    vault_password_file: ~/.vault_pass.txt

    请将路径替换为你的vault密码文件的实际路径。

  3. 保存文件。

或者,你也可以在shell中定义ANSIBLE_VAULT_PASSWORD_FILE环境变量,这样同样可以避免每次运行playbook时都要使用--vault-password-file开关。以下是具体步骤:

  1. 打开终端。
  2. 输入以下命令,将vault密码文件的路径添加到环境变量中:
    bash
    export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt

    请将路径替换为你的vault密码文件的实际路径。

  3. 运行playbook时将自动使用定义的vault密码文件。

方案2

如果你需要为不同的主机组使用不同的vault密码,可以按照以下最佳实践方法进行设置:

  1. 在主机或group_vars子目录中创建两个文件,分别命名为varsvault
  2. vars文件中定义所有需要的变量,包括任何敏感信息。
  3. 将所有敏感变量复制到vault文件中,并在变量前加上vault_前缀。确保vault文件已经通过vault加密。
  4. 确保vars文件中的变量指向匹配的vault_变量。

这是一种在每个主机组上按最佳实践方式管理敏感信息的方法。你可以在Ansible的文档中找到更多信息,链接在这里(上述内容部分摘自该文档)。

请注意,以上方法都可以帮助你在运行playbook时避免每次都输入--vault-password-file,或者允许你在不同的主机组中使用不同的vault密码。

补充说明

如果你的Ansible版本较新,可能会发现在ansible.cfg或playbook中直接使用vault_password_file不起作用,此时你可以参考Ansible源码中的定义进行配置。具体步骤如下:

  1. 打开Ansible源码
  2. 在源码中找到以下定义:
    python
    DEFAULT_VAULT_PASSWORD_FILE = get_config(p, DEFAULTS, 'vault_password_file', 'ANSIBLE_VAULT_PASSWORD_FILE', None, value_type='path')
  3. 根据该定义,在ansible.cfg或playbook中添加如下内容:
    yaml
    vault_password_file: ~/.vault_pass.txt

    请将路径替换为你的vault密码文件的实际路径。

以上方法将帮助你有效地管理Ansible Vault密码文件,以便在运行playbook时能够无缝地使用。

文章内容根据提供的问答数据和相关知识生成,如有疑问或需要进一步的帮助,请随时提问。

正文完