在任务中使用 Ansible 成为密码

Using Ansible become password in a task

我的剧本是用 --ask-become-pass 调用的。成为密码是通过控制机器上的环境变量提供的。

我的许多 项需要权限升级的任务一切正常。但是,有一个或两个任务需要密码直接作为命令的一部分。例如。我希望我可以使用类似的东西: command: /foo/bar autoLoginUser {{ ansible_become_pass }}

...但我得到以下信息:“该任务包含一个带有未定义变量的选项。错误是:'ansible_become_pass' 未定义。”

如果可以的话,我宁愿不在 Vault 中复制这个密码。

如果您使用的是环境变量,则可以使用 lookup,如下所示

- name: Execute command
  command: /foo/bar autoLoginUser {{ lookup('env', 'YOUR_VAR') }}

还有另一种方法可以提供成为密码。根据 documentation:

  • providing the --ask-become-pass command line option
  • setting the ansible_become_password connection variable

这个变量可以在物品栏中设置,像这样:

webserver01 ansible_user=ansible ansible_become_password=secret

或从命令行提供而不是 --ask-become-pass。像这样:

export MY_PASSWORD=secret
ansible-playbook myplaybook.yml -e "ansible_become_password=$MY_PASSWORD"

由于现在已设置此变量,因此您可以执行以下任务:

command: "/foo/bar autoLoginUser {{ ansible_become_password }}"