在任务中使用 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 }}"
我的剧本是用 --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 }}"