gpt4 book ai didi

ansible - 如何让 ansible 对需要 sudo 的多个任务只运行一次 sudo?

转载 作者:行者123 更新时间:2023-12-04 03:43:21 26 4
gpt4 key购买 nike

当ansible以root身份运行多个任务时(become: yes, become_method: sudo),我发现它在单独的 session 中运行每个任务:

john.doe    481901  481809  0 19:44 pts/0    00:00:00 /bin/sh -c sudo -H -S  -p "[sudo via ansible, key=blabla1] password:" -u root /bin/sh -c 'echo BECOME-SUCCESS-blabla1 ; /usr/bin/python3 /home/john.doe/.ansible/tmp/ansible-tmp-1609789454.667826-84063-275493394187528/AnsiballZ_command.py' && sleep 0

john.doe 481937 481809 0 19:44 pts/0 00:00:00 /bin/sh -c sudo -H -S -p "[sudo via ansible, key=blabla2] password:" -u root /bin/sh -c 'echo BECOME-SUCCESS-blabla2 ; /usr/bin/python3 /home/john.doe/.ansible/tmp/ansible-tmp-1609789496.208312-84094-182235695212206/AnsiballZ_command.py' && sleep 0

因此,它不使用 sudo 缓存(/var/run/sudo/ts/john.doe) 但每次都要进行身份验证。这是如果您只使用密码身份验证,这不是问题,因为您使用 --ask-become-pass 指定一次密码,但是当我二手 Duo Mobile作为验证的第二个因素,它插入每个sudo 被验证的时间。所以如果你有多个主机和多个任务,你必须不断地响应推送,而当出现“拒绝攻击”时延迟推送时,ansible run 将失败。

我的问题:

  1. 有没有办法让 ansible sudo 一次,然后运行多个任务?使用上面的例子,它可以而且应该运行单个 sudo 之后的每个 AnsiballZ_command.py 文件身份验证。
  2. 是否有其他方法可以防止 Duo Mobile 寻呼?

最佳答案

这个问题没有答案。三种解决方法是:

  1. 在 ansible 任务开始时,禁用 sudo 密码:
perl -i -pe 's/(?<=\s)PASSWD/NOPASSWD/' /etc/sudoers.d/$(who am i | sed "s/\./-/; s/ .*//")

最后,启用它(交换上面代码中的 PASSWD 和 NOPASSWD)。

  1. 在运行开始时,禁用 Duo 身份验证双控制台(手动或通过 API 调用),最后重新启用
  2. 在没有 Duo 身份验证的情况下设置一个 ansible 用户,但这不太与 #2 相比安全,但如果您的安全性仍然是一种解决方法要求允许。

PS:您可以使用 ssh key 对 sudo 进行身份验证,请参阅 this link .

关于ansible - 如何让 ansible 对需要 sudo 的多个任务只运行一次 sudo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65569405/

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