【问题标题】:How to backup files and folders using ansible?如何使用 ansible 备份文件和文件夹?
【发布时间】:2019-10-12 17:05:09
【问题描述】:

我有一个包含一些模板文件的文件夹和子文件夹,这些模板文件需要部署在远程机器上,但在部署这些文件和文件夹之前,我需要在控制系统(运行 ansible 的地方)中备份这些文件和文件夹。需要部署的文件数量不是固定的,它可能会改变。是否有可能在 ansible 中做到这一点?

下面是我的 ansible 配置和全局变量文件,直到提取步骤为止。

---
#Global vars
aws_access_key: xxx
aws_secret_key: xxx
aws_bucket: s3-artifacts
aws_bucket_download: /deployment/trial/deployment.tar.gz
local_download: deployment.tar.gz
current_dir: /root/tools/deployment/trial/
local_extract_dir: extracted

deployment_usr: root
deployment_grp: root
mode: 775
...




---
- hosts: web
  tasks:
   - name: Download from S3
     s3: aws_access_key="{{ aws_access_key }}" aws_secret_key="{{ aws_secret_key }}" bucket="{{ aws_bucket }}" object="{{ aws_bucket_download }}" dest="{{ current_dir }}/{{ local_download }}" mode=get overwrite=true
   #Change permissions
   - name: Change permissions
     file: path="{{ current_dir }}/{{ local_download }}" owner="{{ deployment_usr }}" group="{{ deployment_grp }}" mode="{{ mode }}"
   #Extract
   - name: mkdir local_extract_dir
     file: path="{{ current_dir }}/{{ local_extract_dir }}" state=directory mode="{{ mode }}"
   - name: Extracting deployment folder 
     unarchive: src="{{ current_dir }}/{{ local_download }}" dest="{{ current_dir }}/{{ local_extract_dir }}"
   - name: Give permissions
     file: path="{{ current_dir }}/{{ local_extract_dir }}" owner="{{ deployment_usr }}" group="{{ deployment_grp }}" mode="{{ mode }}"

   #Backup
   #- name: Synchronize
     #synchronize: src="{{ current_dir }}/{{ local_extract_dir }}"

...

我还尝试运行(cd extracted; find .) | cut -c 3- 命令,该命令提供提取的文件和文件夹的列表,但需要帮助从远程计算机备份这些文件。

【问题讨论】:

    标签: ansible ansible-playbook ansible-2.x


    【解决方案1】:

    如果我正确理解您的问题,您正在寻找copy 模块:

    - name: Copy some directory
      copy:
        src: "{{ current_dir }}/{{ local_extract_dir }}/"
        dest: "{{ backup_dir }}/"
      delegate_to: localhost
    

    如果您更喜欢基于 rsync 的解决方案,还可以查看 synchronize module

    【讨论】:

      【解决方案2】:

      看看

      https://docs.ansible.com/ansible/latest/modules/fetch_module.html

      
      - name: Specifying a path directly
        fetch:
          src: /tmp/somefile
          dest: /tmp/prefix-{{ inventory_hostname }}
          flat: yes
      
      

      【讨论】:

        猜你喜欢
        • 2019-11-16
        • 1970-01-01
        • 2022-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        相关资源
        最近更新 更多