再開可能な再生は可能ですか(例:site.retryを使用)。

再開可能な再生は可能ですか(例:site.retryを使用)。

Ansible を使用する場合、しばしば「等値」という属性が使用されます。役割を2番目に適用すると、同じ結果が得られます。たとえば、設定ファイルに同じ行の2番目のコピーを追加しません。

「回復可能」と呼ぶことができる別の属性があります。コントローラとターゲットの間にネットワークパーティションが発生した場合、パーティションが解決された後に中断された再生を再実行できますか?

アンシプールヒントこの属性は、失敗したターゲットをリストし、再試行を許可することによって実装されます。

ところが実際の事例を見るとこんな属性がないようです。スクリプトが正しく回復しない状況を識別する方法を提案してください。

- name: Create Mysql configuration file
  template: src=my.cnf.j2 dest=/etc/my.cnf
  notify:
  - restart mysql

- name: Start Mysql Service
  service: name=mysqld state=started enabled=yes

たとえば、ansible-examplesの上記のコードスニペットは「回復可能」属性を実装しません。プロファイルの作成後に「restart mysql」ハンドラが実行される前に再生が中断された場合、「restart mysql」ハンドラは実行されません。

ベストアンサー1

原則として、サービスの再起動後にタイムスタンプファイルをタッチすると、再開可能な再生が可能です。その後、サービスを再起動するための条件は、再起動タイムスタンプが設定ファイルの変更時刻より前かどうかです。 (からインスピレーションを受けるmake)。

設定ファイルには、デフォルトのansibleモジュールを使用することもできます。

- name: Create Mysql configuration file
  template: src=my.cnf.j2 dest=/etc/my.cnf

- name: query  | mysql has been restarted with new config file
  template: src=my.cnf.j2 dest=/ansible-managed/mysql/restarted/my.cnf
  check_mode: yes
  register: mysql_restarted

- name: ensure | mysql has been restarted with new config file
  service: name=mysqld state=restarted
  when: mysql_restarted|changed    

- name: record | mysql has been restarted with new config file
  template: src=my.cnf.j2 dest=/ansible-managed/mysql/restarted/my.cnf

(または例えば

- name: query  | mysql has been restarted with new config file
  copy: remote_src=yes src=/etc/my.cnf dest=/ansible-managed/mysql/restarted/my.cnf
  check_mode: yes
  register: mysql_restarted

remote_srcそれでもただディレクトリではなく別の設定ファイルを使用してください。)

おすすめ記事