Ansibleを使用していますが、タスクを1回だけ実行したいと思います。タスクを構成して タスクを1回だけ実行する方法 に関するドキュメントに従います
- name: apt update
Shell: apt-get update
run_once: true
しかし、Ansibleを実行すると、常にこのタスクが実行されます。タスクを1回だけ実行するにはどうすればよいですか。
Run_onceオプションは、Playbook /タスクが実行されるたびに実行されますが、特定の実行自体の間に1回だけ実行されます。したがって、プレイを実行するたびに実行されますが、リストの最初のホストでのみ実行されます。そのコマンドを1回だけ実行する方法を探している場合は、creates引数を使用する必要があります。あなたの例を使用して、これは以下を使用することによって達成することができます-
- name: apt update
Shell: apt-get update && touch /root/.aptupdated
args:
creates: /root/.aptupdated
この場合、ファイル/root/.aptupdatedが作成されます。タスクは、それが存在するかどうかを確認し、存在する場合は実行されません。
関連する注意事項として、実行しようとしているタスクがapt-get updateの場合は、ネイティブのaptモジュールを使用することをお勧めします。その後、次のようなことを行うことができます-
- name: apt update
apt: update_cache=yes cache_valid_time=86400
これで、キャッシュが1日より古い場合にのみ実行されます。