ansible playbook 恢复备份文件
有的时候我们用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