[svc]ansible实现备份 实现发邮件 远端解压

后续会陆陆续续本着简单到复杂,从语法到应用案例,大道至简的原则来搞搞ansible。


1.远端解压.将远端的压缩包解压到远端某个目录

- hosts: nodexx
  remote_user: root
  vars:
  - dfpath: "/backup/scm-data/"
  tasks:
    - name "this vm restore scm data to test data on app"
      unarchive:
        src: /tmp/etc.tar.gz  #可以是url,从网上下载
        dest: /root
        remote_src: "{{ dfpath }}"

2,远端压缩,并取回
- hosts: nodexx
    remote_user: root
    vars:
      - sfpath: "/backup/scm-data/*_$(date +%F)_scmdata.tar.gz"
      - dfpath: "/backup/scm-data/"
    - name: Package | make /root/.scm to tar.gz package on node14
      raw: cd /root && tar zcf /data/backup/scm-data/`ifconfig|sed -n '2p'|awk -F':' '{print $2}'|awk '{print $1}'`_$(date +%F)_scmdata.tar.gz .scm


    - name: Download | copy nodexx's tar.gz to ansible vm([this vm] /data/scm-data)
      synchronize:
        src: "{{ sfpath }}"
        dest: "{{ dfpath }}"
        mode: pull
#注意使用连这执行命令 如 cd / && echo 1>1.txt ,shell不好使,需要使用raw模块
#带变量的定义


3,利用mail模块发邮件
- hosts: nodexx
    remote_user: root
    - name: sendMail to op
      mail:
        host: smtp.sina.com
        port: 25
        username: [email protected]
        password: xxx
        from: [email protected] (lannymxl)
        to: Jack 
        # cc: John Doe , Suzie Something 
        # cc: Wang Wu , Li Si 
        attach: /etc/fstab /etc/hosts
        subject: Backup-scm successfully
        body: 'System {{ ansible_hostname }}-192.168.x.x from 192.168.x.x scm-backup has been successfully provisioned.'


4,从scm主机每天备份,备份完事后发邮件--ansible实现
- hosts: nodexx-scm
  remote_user: root
  vars:
  - sfpath: "/backup/scm-data/*_$(date +%F)_scmdata.tar.gz"
  - dfpath: "/backup/scm-data/"
  tasks:#清理远端的压缩包,远端进保留一天scm-data.tar.gz  2,远端打包并将压缩包取回
    - name: Clean | keeping [scm-server-node14]'s /backup/scm-data dir only have one tar pkg
      shell: find /backup/scm-data/ -name "*.tar.gz"  -type f -mtime|xargs rm -f


    - name: Package | make /root/.scm to tar.gz package on node14
      raw: cd /root && tar zcf /data/backup/scm-data/`ifconfig|sed -n '2p'|awk -F':' '{print $2}'|awk '{print $1}'`_$(date +%F)_scmdata.tar.gz .scm


    - name: Download | copy node14's tar.gz to ansible vm([this vm] /data/scm-data)
      synchronize:
        src: "{{ sfpath }}"
        dest: "{{ dfpath }}"
        mode: pull
    
    # 远程解压
    # - name "this vm restore scm data to test data on app"
    #   unarchive:
    #     src: "{{ dfpath }}"
    #     dest: /root
    #     remote_src: True
- hosts: localhost
  remote_user: root
  tasks: 
  #清理本地scm压缩包,仅保存7天的压缩包. 完事后,发邮件.
    - name: Keeps scm-data.tar.gz of 7 days in local
      shell: find /backup/scm-data/ -name "*.tar.gz"  -type f -mtime|xargs rm -f


    - name: sendMail to op
      mail:
        host: smtp.sina.com
        port: 25
        username: [email protected]
        password: xxx
        from: [email protected] (lannymxl)
        to: Jack 
        # cc: John Doe , Suzie Something 
        # cc: Wang Wu , Li Si 
        attach: /etc/fstab /etc/hosts
        subject: Backup-scm successfully
        body: 'System {{ ansible_hostname }}-192.168.x.x from 192.168.x.x scm-backup has been successfully provisioned.'


你可能感兴趣的:([svc]ansible实现备份 实现发邮件 远端解压)