Пример 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 установка и запуск программ.