2016-05-01 29 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

您可以將「ignore_errors: yes」添加到「創建EMS數據庫備份」任務中,以便在命令失敗時播放不會失敗,並且您可以使用相同的「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" 
相關問題