端くれプログラマの備忘録 Ansible [Ansible] copyモジュール

[Ansible] copyモジュール

機能

  • ローカルまたはリモートマシンから、リモートマシン上のロケーションへ、単一ファイルをコピーする。
  • リモートロケーションからローカルボックスへ複数ファイルをコピーするにはfetchモジュールを使用する。
  • コピーされるファイル中で変数補間が必要な場合はtemplateモジュールを使用する。contentフィールド中に変数を使うと予期不可能な出力を生ずる。
  • Windowsターゲットに関しては、代わりにwin_copyモジュールを使う。

使用例

- name: Copy file with owner and permissions
  ansible.builtin.copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'

- name: Copy file with owner and permission, using symbolic representation
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.copy:
    src: /mine/sudoers
    dest: /etc/sudoers
    validate: /usr/sbin/visudo -csf %s # 更新されたファイルが最終場所にコピーされる前に実行される

- name: Copy a "sudoers" file on the remote machine for editing
  ansible.builtin.copy:
    src: /etc/sudoers
    dest: /etc/sudoers.edit
    remote_src: yes
    validate: /usr/sbin/visudo -csf %s

- name: Copy using inline content
  ansible.builtin.copy:
    content: '# This file was moved to /etc/other.conf' # ファイルの内容
    dest: /etc/mine.conf

- name: If follow=yes, /path/to/file will be overwritten by contents of foo.conf
  ansible.builtin.copy:
    src: /etc/foo.conf
    dest: /path/to/link  # link to /path/to/file
    follow: yes

- name: If follow=no, /path/to/link will become a file and be overwritten by contents of foo.conf
  ansible.builtin.copy:
    src: /etc/foo.conf
    dest: /path/to/link  # link to /path/to/file
    follow: no

参考サイト

ansible.builtin.copy module – Copy files to remote locations — Ansible Documentation
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html