2016-05-01 5 views
1

条件が失敗したときに特定の場所からファイルを削除する方法を実装します。可能なタスクが失敗した場合、特定の場所から既存のファイルを削除します。

- set_fact: 
     mysql_dump_file: "{{ db_name }}_backup-{{ ansible_date_time.iso8601 }}.sql" 

    - name: create backup of the EMS database 
    shell: " mysqldump --single-transaction --triggers --routines --events --hex-blob --complete-insert -h {{ db_name }} -u {{ db_user }} -p{{ db_password }} {{ db_name }} > {{ vars.inventory_dir }}/../{{ mysql_dump_file }}" 
    register: db_backup_done 

    - name: Fail play if database backup fail 
    fail: 
     msg: 'The database {{ db_name }} backup fail.' 
    when: "db_backup_done.rc != 0" 

再生に失敗した場合は、「mysql_dump_file」を削除したいだけです。

答えて

1

また、危険なブロックを使用することもできます。これは、あなたが何をしているのかをより明確にします。

-block: 
    - set_fact: 
    mysql_dump_file: "{{ db_name }}_backup-{{ ansible_date_time.iso8601 }}.sql" 
    - name: create backup of the EMS database 
    shell: " mysqldump --single-transaction --triggers --routines --events --hex-blob --complete-insert -h {{ db_name }} -u {{ db_user }} -p{{ db_password }} {{ db_name }} > {{ vars.inventory_dir }}/../{{ mysql_dump_file }}" 
    register: db_backup_done 
    - name: Fail play if database backup fail 
    fail: 
    msg: 'The database {{ db_name }} backup fail.' 
    when: "db_backup_done.rc != 0" 
    rescue: 
    - name: Remove the mysql_dump_file if db backup failed 
     file: path={{ mysql_dump_file }} state=absent 
1

「EMSデータベースのバックアップの作成」タスクに「ignore_errors: yes」を追加すると、コマンドが失敗しても再生が失敗せず、同じ「db_backup_done.rc != 0」条件を使用してバックアップファイルを削除できます。

- name: create backup of the EMS database 
    shell: " mysqldump --single-transaction --triggers --routines --events --hex-blob --complete-insert -h {{ db_name }} -u {{ db_user }} -p{{ db_password }} {{ db_name }} > {{ vars.inventory_dir }}/../{{ mysql_dump_file }}" 
    register: db_backup_done 
    ignore_errors: yes 

    - name: Remove the mysql_dump_file if db backup failed 
    file: path={{ mysql_dump_file }} state=absent 
    when: "db_backup_done.rc != 0" 
関連する問題