gpt4 book ai didi

ansible - 对 ansible_connection=local 使用 --become

转载 作者:行者123 更新时间:2023-12-05 00:50:59 26 4
gpt4 key购买 nike

使用个人用户帐户 (userx),我在所有指定的主机上运行 ansible playbook。在 ansible.cfg 中,要使用的远程用户(可以成为 root)是:

remote_user = ansible

对于远程主机,这一切都很好。它以用户 Ansible 的身份连接,并根据需要执行所有任务,还更改需要 root 权限的信息(如 /etc/ssh/sshd_config)。

但现在我也想在 Ansible 主机本身上执行剧本。我将以下内容放在我的库存文件中:
localhost ansible_connection=local

现在确实在本地主机上执行。但是作为 userx,这会导致它需要执行的某些任务“拒绝访问”。

这当然是有些意料之中的,因为 remote_user 告诉的是远程用户,而不是本地用户。但是,我仍然希望剧本会 --become在本地也可以以 root 身份执行任务(例如 sudo su - )。似乎没有这样做。

使用 --become -vvv 运行剧本告诉我
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: userx

并且似乎没有尝试使用 sudo 执行任务。如果不使用 sudo,任务就会失败。

我怎样才能告诉 ansible 在本地连接上使用 sudo/become 呢?

最佳答案

没有什么特别的要求。证明:

  • 剧本:
    ---
    - hosts: localhost
    gather_facts: no
    connection: local
    tasks:
    - command: whoami
    register: whoami
    - debug:
    var: whoami.stdout
  • 执行线:
    ansible-playbook playbook.yml --become
  • 结果:
    PLAY [localhost] ***************************************************************************************************

    TASK [command] *****************************************************************************************************
    changed: [localhost]

    TASK [debug] *******************************************************************************************************
    ok: [localhost] => {
    "changed": false,
    "whoami.stdout": "root"
    }

    PLAY RECAP *********************************************************************************************************
    localhost : ok=2 changed=1 unreachable=0 failed=0

  • ESTABLISH LOCAL CONNECTION FOR USER:消息将始终显示当前用户,因为它是用于“连接”的帐户。

    稍后,从模块调用的命令以提升的权限执行。

    当然可以加 become: yes无论是游戏级别还是个人任务。

    关于ansible - 对 ansible_connection=local 使用 --become,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901867/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com