我正在使用 Ansible,我只想运行一次任务。我遵循有关如何配置的文档和 run a task only once
- name: apt update
shell: apt-get update
run_once: true
但是当我运行 Ansible 时,它总是运行这个任务。我怎样才能只运行一次我的任务。
最佳答案
run_once 选项将在您的 Playbook/tasks 每次运行时运行,但只会在特定运行期间运行一次。所以每次你运行 play 时,它都会运行,但只在列表中的第一个主机上运行。如果您正在寻找一种只运行该命令一次的方法,则需要使用 created 参数。使用您的示例,这可以通过使用以下方法来实现 -
- name: apt update
shell: apt-get update && touch /root/.aptupdated
args:
creates: /root/.aptupdated
在这种情况下,文件/root/.aptupdated 被创建。该任务现在将检查它是否存在,如果存在,它将不会运行。
在相关说明中,如果您尝试运行的任务是 apt-get 更新,您可能需要使用 native apt 模块。然后你可以做这样的事情 -
- name: apt update
apt: update_cache=yes cache_valid_time=86400
现在这只会在缓存超过一天的情况下运行。
关于task - ansible 忽略任务上的 run_once 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409164/