有的时候我们用copy模块备份的文件想要回滚
ansible -i pbs_hosts all -m copy -a "src=file/hosts dest=/etc/ backup=yes"
那我们就可以用下面这种方式进行回滚
cat restore.hosts.yml
--- #固定格式
#- hosts: "{{ ansiblegroupnames }}" #需要操作的组或者服务器,可以使用-e传入
- hosts: "saas_hosts"gather_facts: falsevars:file_name: /etc/hosts #需要恢复的远程文件位置,可以使用-e传入,当前位置为测试用文件ansiblegroupnames: 127.0.0.1tasks:- name: "查找指定文件:{{ file_name }}"find:recurse: nopaths:- "{{ file_name | dirname }}"#- "/etc/"patterns:- '{{ file_name | basename }}\..*~' #这里必须使用单引号use_regex: trueregister: backup_file #注册成变量# - name:# debug: # msg: "{{ backup_file }}"- name: "查找最后一个备份文件按mtime时间排序"set_fact:latest_backup: "{{ (backup_file.files | sort(attribute='mtime') | last).path }}"- name: "还原备份文件:{{ file_name }}"copy:src: "{{ latest_backup }}"remote_src: truedest: "{{ file_name }}"
cat saas_hosts_all
[saas_hosts]
192.168.1.1
ansible-playbook -i saas_hosts_all restore.hosts.yml -C