
Пример ansible копирование файлов и директорий.
Пример 1.
Используем модуль copy.
hosts: «all» — Тут указываем что копирование файлов нужно сделать на все сервера в подчинении у ansible.
Что бы не делать кучу задач по копированию индивидуальных файлов, создадим переменную списка что копируем ‘{{item}}’, содержимое переменной что копируем находится в loop.
With_items переменная устарела и заменена loop с версии ansible 2.5.
Тут мы копируем с целевой машины на которой установлен ansible на все сервера в подчинении ansible.
Копирование будет по тем же путям расположения файлов.
- hosts: "all"
tasks:
- name: Copy files.
copy:
src: '{{item}}'
dest: '{{item}}'
loop:
- /etc/periodic.conf
- /etc/csh.cshrc
- /etc/rc.conf
Пример 2.
Либо более универсальный пример, что бы не было привязки к текущей системе.
Тут копируем на два сервера ans_test и ans_test1.
В домашней директории ansible у меня она такая /usr/local/etc/ansible, создадим директорию files.
В директории files создадим директорию sys, будет уже раскидывать файлы по нашим серверам из нее.
Loop указаны пути файлов.
- hosts: ans_test ans_test1
tasks:
- name: Copy system settings files.
copy:
src: 'files/sys/{{ item }}'
dest: '{{ item }}'
loop:
- /etc/periodic.conf
- /etc/csh.cshrc
- /etc/rc.conf
- /usr/local/etc/mysql/my.cnf
- /root/backup
Пример 3.
Используем модуль synchronize.
Для использования этого метода на подчиненных серверах должен быть установлен пакет rsync.
Синхронизируем содержимое директории /mnt/tets.
Синхронизация директории будет на группе серверов под название BSD.
- hosts: "BSD"
tasks:
- name: Syn files.
synchronize:
src: '/mnt/tets'
dest: '/mnt/'
Пример 4.
Копирование только на один сервер ans_test1.
- hosts: ans_test1
tasks:
- name: Copy files.
command: cp -r /mnt/test/{{ item }} /mnt/test1/
loop:
- "test.txt"
- "uploud/"
Есть и другие способы копирования, но мне пока этих достаточно.
Ansible копирование файлов и директорий вот и все.
Настройка ansible первые шаги.
ansible распаковка архива.
Ansible установка и запуск программ.