我正在使用 Ansible,我只想运行一次任务。我只遵循一次关于如何配置和运行任务的文档
- name: apt update
shell: apt-get update
run_once: true
但是当我运行 Ansible 时,它总是运行这个任务。我怎样才能只运行一次我的任务。
我正在使用 Ansible,我只想运行一次任务。我只遵循一次关于如何配置和运行任务的文档
- 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 更新,您可能需要使用本机 apt 模块。然后你可以做这样的事情 -
- name: apt update
apt: update_cache=yes cache_valid_time=86400
现在这只会在缓存超过一天的情况下运行。