我正在使用Ansible,我只想运行一次任务。我按照有关如何配置和run a task only once
的文档进行操作- name: apt update
shell: apt-get update
run_once: true
但是当我运行Ansible时,它总是运行这个任务。我怎么能只运行一次任务。
答案 0 :(得分:28)
run_once选项将在每次Playbook / tasks运行时运行,但仅在特定运行期间运行一次。因此,每次运行游戏时,它都会运行,但只能在列表中的第一个主机上运行。如果您正在寻找一种只运行该命令一次的方法,那么您需要使用creates参数。使用您的示例,可以使用以下命令实现 -
- 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
现在只有在缓存超过一天时才会运行。