Ansible Playbook 总是要求输入Become密码,即使没有指定become用户

62次阅读
没有评论

问题描述

在使用Ansible Playbook时,遇到一个问题:即使没有指定become用户,每次运行Playbook时都会交互式地要求输入Become密码。用户希望找到解决办法,以便能够将此Playbook作为脚本的一部分进行部署。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据回答1,你在运行ansible-playbook命令时使用了-K选项,这会导致提示输入特权升级密码。根据官方文档-K选项的含义是:

-K, –ask-become-pass:询问特权升级密码

尝试在运行ansible-playbook命令时不使用-K选项,即可解决该问题。

方案2

如果你希望在运行Playbook时不手动输入Become密码,可以在Ansible配置文件中进行相应的设置。你可以在ansible.cfg文件中添加以下配置:

[privilege_escalation]
become=False

这将禁用特权升级功能,从而避免提示输入Become密码。请确保在运行Playbook之前备份ansible.cfg文件,以防止意外情况发生。

方案3

如果你希望在运行Playbook时自动提供Become密码,可以在Ansible配置文件中进行相应的设置。你可以在ansible.cfg文件中添加以下配置:

[privilege_escalation]
become=True
become_ask_pass=False

这将启用特权升级功能,并禁用提示输入Become密码。请注意,这样做可能会带来一定的安全风险,因为密码将以明文形式存储在配置文件中。请确保在运行Playbook之前备份ansible.cfg文件,并确保只有受信任的用户可以访问该文件。

方案4

如果你希望在运行Playbook时自动提供Become密码,但又不想将密码明文存储在配置文件中,可以考虑使用Ansible Vault来加密密码。以下是一些基本步骤:
1. 使用ansible-vault命令创建一个加密文件,例如passwords.yml
bash
ansible-vault create passwords.yml

2. 在加密文件中添加Become密码,例如:
yaml
become_password: your_become_password

3. 在Playbook中使用ansible-vault命令来解密加密文件,并将密码传递给特权升级:
yaml
- name: Execute the Provisioning script
command: sh ./prod-setup.sh
become: true
become_password: "{{ lookup('file', 'passwords.yml') | from_yaml }}"

这将从加密文件中读取Become密码,并将其传递给特权升级。

请注意,使用Ansible Vault加密密码可以提高安全性,但也会增加管理和维护的复杂性。请确保妥善保管加密文件,并确保只有授权的用户可以访问它。

以上是几种解决方案,你可以根据自己的需求选择适合的方法来解决该问题。希望能帮助到你!

正文完