有的时候我们用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: false

vars:

file_name: /etc/hosts #需要恢复的远程文件位置,可以使用-e传入,当前位置为测试用文件

ansiblegroupnames: 127.0.0.1

tasks:

- name: "查找指定文件:{{ file_name }}"

find:

recurse: no

paths:

- "{{ file_name | dirname }}"

#- "/etc/"

patterns:

- '{{ file_name | basename }}\..*~' #这里必须使用单引号

use_regex: true

register: 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: true

dest: "{{ file_name }}"

cat saas_hosts_all

[saas_hosts]

192.168.1.1

 

ansible-playbook -i saas_hosts_all  restore.hosts.yml -C

查看原文