copy — Копирование файлов в удалённые расположения
Описание
- Модуль
copyкопирует файл с локального или удалённого компьютера в местоположение на удалённом компьютере. Для копирования файлов из удалённых расположений на локальный компьютер используйте модуль fetch. Если вам нужна интерполяция переменных в копируемых файлах, используйте модуль template. - Для целевых систем Windows используйте модуль win_copy.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes (добавлен в 2.3) | Атрибуты файла или каталога. Для получения поддерживаемых флагов см. страницу справки для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr. псевдонимы: attr | |
| backup bool |
| Создать резервную копию файла, включая информацию о времени, чтобы можно было восстановить исходный файл, если его каким-то образом повредить. |
| checksum (добавлен в 2.5) | Контрольная сумма SHA1 копируемого файла. Используется для проверки успешности копирования файла. Если этот параметр не указан, Ansible будет использовать вычисленную на локальной машине контрольную сумму исходного файла. | |
| content | При использовании вместо src, устанавливает содержимое файла напрямую в указанное значение. Для более сложных задач или задач с форматированием также можно использовать модуль template. | |
| decrypt bool (добавлен в 2.4) |
"Да" | Этот параметр управляет автоматическим расшифрованием исходных файлов с использованием vault. |
| dest обязательно | Абсолютный удалённый путь, куда нужно скопировать файл. Если src является каталогом, то и dest должен быть каталогом. Если dest — несуществующий путь и dest заканчивается на «/» или src является каталогом, то dest будет создан. Если src и dest — файлы, то родительский каталог dest не создаётся: задача завершается неудачно, если он не существует. | |
| directory_mode (добавлен в 1.5) | При рекурсивном копировании устанавливает режим для каталогов. Если этот параметр не задан, будут использованы системные значения по умолчанию. Режим устанавливается только для вновь созданных каталогов, на уже существующие он не повлияет. | |
| follow bool (добавлен в 1.8) |
| Этот флаг указывает, что при копировании необходимо следовать ссылкам на файлы в пункте назначения, если они существуют. |
| force bool |
| Значение по умолчанию — yes, что приведет к замене удалённого файла при различии содержимого от исходного. Если no, файл будет скопирован только в том случае, если файла назначения не существует.псевдонимы: thirsty |
| group | Имя группы, которая должна владеть файлом/каталогом, как это передаётся в chown. | |
| local_follow bool (добавлен в 2.4) |
| Этот флаг указывает, что при копировании необходимо следовать ссылкам на файлы в исходном дереве, если они существуют. |
| mode | Режим файла или каталога. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы — это фактически восьмеричные числа. Вы должны либо указать ведущую цифру 0, чтобы Ansible распознал восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '0644'), чтобы Ansible получил строку и смог преобразовать её в число. Если вы передадите Ansible число без соблюдения одного из этих правил, получится десятичное число, что приведёт к неожиданным результатам. Начиная с версии 1.8, режим можно указать в символическом формате (например, u+rwx или u=rw,g=r,o=r). Начиная с версии 2.3, режим также может быть специальной строкой preserve. preserve означает, что файлу будут назначены такие же разрешения, как и исходному файлу. | |
| owner | Имя пользователя, который должен владеть файлом/каталогом, как это передаётся в chown. | |
| remote_src bool (добавлен в 2.0) |
| Если no, будет поиск src на исходной/главной машине.Если yes то src будет найден на удалённой/целевой машине. Значение по умолчанию — no. В настоящее время remote_src не поддерживает рекурсивное копирование.
remote_src работает только с mode=preserve начиная с версии 2.6. |
| selevel | Значение по умолчанию: "s0" | Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. _default функция работает так же, как и для seuser. |
| serole | Роль в контексте файла SELinux, функция _default работает так же, как и для seuser. | |
| setype | Тип в контексте файла SELinux, функция _default работает так же, как и для seuser. | |
| seuser | Пользователь в контексте файла SELinux. По умолчанию используется системная политика, если применимо. Если задано _default, используется часть политики user, если она доступна. | |
| src | Локальный путь к файлу, который нужно скопировать на удалённый сервер; может быть абсолютным или относительным. Если путь является каталогом, он копируется рекурсивно. В этом случае, если путь заканчивается на «/», будут скопированы только содержимое этого каталога в пункт назначения. Иначе, если путь не заканчивается на «/», будет скопирован сам каталог со всем содержимым. Это поведение аналогично Rsync. | |
| unsafe_writes bool (добавлен в 2.2) |
| Обычно этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов. Иногда системы настроены или просто неисправны таким образом, что это не возможно. Одним из примеров являются файлы, смонтированные в Docker, их нельзя обновлять атомарно, и это можно сделать только небезопасным способом. Этот логический параметр позволяет Ansible использовать небезопасные методы обновления файлов в тех случаях, когда нет другого выбора. Следует учитывать, что это может привести к проблемам гонки и повреждению данных. |
| validate | Команда валидации, которую нужно выполнить перед копированием. Путь к проверяемому файлу передаётся через «%s», что необходимо, как показано в примере ниже. Команда передаётся безопасно, так что такие функции оболочки, как расширение и конвейеры, не будут работать. |
Примечания
Примечание
- Функция рекурсивного копирования модуля copy не масштабируется для большого количества файлов (> сотен). Для альтернативного решения обратитесь к модулю synchronize, который является оболочкой вокруг
rsync. - Для целевых систем Windows используйте модуль win_copy.
Примеры
- name: example copying file with owner and permissions
copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: 0644
- name: The same example as above, but using a symbolic mode equivalent to 0644
copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: u=rw,g=r,o=r
- name: Another symbolic mode example, adding some permissions and removing others
copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: u+rw,g-wx,o-rwx
- name: Copy a new "ntp.conf file into place, backing up the original if it differs from the copied version
copy:
src: /mine/ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: 0644
backup: yes
- name: Copy a new "sudoers" file into place, after passing validation with visudo
copy:
src: /mine/sudoers
dest: /etc/sudoers
validate: /usr/sbin/visudo -cf %s
- name: Copy a "sudoers" file on the remote machine for editing
copy:
src: /etc/sudoers
dest: /etc/sudoers.edit
remote_src: yes
validate: /usr/sbin/visudo -cf %s
- name: Copy using the 'content' for inline data
copy:
content: '# This file was moved to /etc/other.conf'
dest: /etc/mine.conf'
Возвращаемые значения
Общие возвращаемые значения описаны в документации, а поля, уникальные для данного модуля, приведены ниже:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| backup_file строка | изменено, если backup=yes | имя созданного файла резервной копии Пример: /path/to/file.txt.2015-02-12@22:09~ |
| checksum строка | успех | sha1 контрольная сумма файла после выполнения копирования Пример: 6e642bb8dd5c2e027bf21dd923337cbb4214f827 |
| dest строка | успех | целевой файл/путь Пример: /path/to/file.txt |
| gid целое число | успех | идентификатор группы файла после выполнения Пример: 100 |
| group строка | успех | группа файла после выполнения Пример: httpd |
| md5sum строка | при поддержке | md5 контрольная сумма файла после выполнения копирования Пример: 2a5aeecc61dc98c4d780b14b330e3282 |
| mode строка | успех | разрешения целевого объекта после выполнения Пример: 420 |
| owner строка | успех | владелец файла после выполнения Пример: httpd |
| size целое число | успех | размер целевого объекта после выполнения Пример: 1220 |
| src строка | изменено | исходный файл, использованный для копирования на целевом компьютере Пример: /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source |
| state строка | успех | состояние целевого объекта после выполнения Пример: файл |
| uid целое число | успех | идентификатор владельца файла после выполнения Пример: 100 |
Статус
Этот модуль помечен как stableinterface, что означает, что поддерживающие его специалисты гарантируют отсутствие несовместимых изменений интерфейса.
Техническое обслуживание
Этот модуль помечен как core, что означает, что он поддерживается Командой по Ansible Core. Подробнее см. Техническое обслуживание и поддержка модулей.
Список других модулей, также поддерживаемых командой Ansible Core Team, см. здесь.
Поддержка
Дополнительную информацию о поддержке этого модуля компанией Red Hat см. в этой статье базы знаний
Автор
- Команда Ansible Core
- Майкл ДеХан
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/copy_module.html