【问题标题】:Using Ansible become password in a task在任务中使用 Ansible 成为密码
【发布时间】:2020-11-17 04:07:10
【问题描述】:

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

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

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

如果可以的话,我宁愿不要在保险柜中复制此密码。

【问题讨论】:

    标签: macos ansible ansible-vault


    【解决方案1】:

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

    • 提供 --ask-become-pass 命令行选项
    • 设置 ansible_become_password 连接变量

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

    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 }}"
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢@gary-lopez 我曾考虑过 - 这可能是我的 B 计划 - 唯一的问题是开发人员(知道密码)直接使用有点不方便。
      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多