首页 > 解决方案 > 从角色复制整个文件夹结构与现有文件合并/覆盖

问题描述

我使用 Ansible 在新安装的系统上部署我的用户特定配置(shell、文本编辑器等)。这就是为什么我在我的角色文件目录中拥有所有配置文件的原因,其结构与它们应该放在我的主目录中的方式相同。

实现这一点的正确方法是什么?我不想列出角色中的每个文件,并且应该覆盖现有文件,应该合并现有目录。

我已经尝试过复制模块,但整个任务都被跳过了;我假设因为父目录(.config)已经存在。

编辑:添加请求的附加信息

Ansible 版本:2.9.9

角色复制任务:

- name: Install user configurations
  copy:
    src: "home/"
    dest: "{{ ansible_env.HOME }}"

要在角色目录中复制的文件:

desktop-enviroment
├── defaults
│   └── main.yml
├── files
│   └── home
│       ├── .config
│       │   ├── autostart-scripts
│       │   │   └── ssh-keys.sh
│       │   ├── MusicBrainz
│       │   │   ├── Picard
│       │   │   ├── Picard.conf
│       │   │   └── Picard.ini
│       │   ├── sublime-text-3
│       │   │   ├── Installed Packages
│       │   │   ├── Lib
│       │   │   ├── Local
│       │   │   └── Packages
│       │   └── yakuakerc
│       └── .local
│           └── share
│               ├── plasma
│               └── yakuake
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   ├── desktop-common.yaml
│   ├── desktop-gnome.yaml
│   ├── desktop-kde.yaml
│   └── main.yml
├── templates
└── vars
    └── main.yml

相关的ansible输出:

TASK [desktop-enviroment : Install user configurations] **
ok: [localhost]

标签: ansible

解决方案


推荐阅读