Ansible copy moduleはAnsibleのファイルモジュールの中の1つのモジュールである。 Ansible copyモジュールは、Ansibleマシンからリモートサーバにファイルをコピーするために使用されます。 Ansible copyモジュールで様々なことができますので、Ansible copyモジュールで何ができるか見てみましょう。
Copy the file with force yes-Ansible Copy Module
tasks:- name: Copy file to a remote machine copy: src: ~/devops.txt dest: /tmp
This example devops.txt file in the ansible machine will copy to the destination location in the remote server.but if the same file (with same name) already exists in destination location in the remote server, it will replace with the file from ansible machine.txt. このとき、そのファイルがリモートの場所に存在するかどうかは考慮されません。
- Ansible Fetch module tutorial
by default, force is yes
tasks:- name: Copy file to a remote machine copy: src: ~/devops.txt dest: /tmp force: yes
So both above codes are work like the same.つまり、上記のコードは両方とも同じように動作します。 forceについて言及する:はい、またはforceを削除する:はい、それはあなた次第です。
Copy the file with force no-Ansible Copy Module
tasks:- name: Copy file to a remote machine copy: src: ~/devops.txt dest: /tmp force: no
ここでは、強制はしません。ファイルがインストール先にすでに存在する場合は、ファイルを置き換えません。
Ansibleマシンからリモートサーバーにディレクトリをコピーする-Ansible Copy Examples
ここで、scriptsというディレクトリがあると仮定します。 このディレクトリには、file1 と file2 という 2 つのファイルと Linux ディレクトリがあり、Linux ディレクトリには file3 と file4 という 2 つのファイルがあります。
scripts├── file1├── file2└── linux ├── file3 ├── file4
ここでタスクは、Linux ディレクトリをリモートサーバーに送信またはコピーする必要があることです。
tasks:- name: Copy a directory to a remote machine copy: src: /User/scripts/linux dest: /tmp
上記のコードを使用すると、LinuxディレクトリをAnsibleマシンからリモートサーバーの場所に送信またはコピーできます。
src:/user/scripts/linux の最後に (/) がないため、LinuxディレクトリがAnsibleマシンからリモートへコピーされる理由を見てください。
├── tmp└── linux ├── file3 ├── file4
src の最後に (/) を記述すると、Linux ディレクトリのファイル (file3 と file4) がリモートへコピーされます。
see src:/user/scripts/linux/
tasks:- name: Copy files to a remote machine copy: src: /User/scripts/linux/ dest: /tmp
the output in the remote tmp directory
└── tmp ├── file3 ├── file4
source end で、 (/) を記述すると Linux ディレクトリ内のファイルだけがリモートへコピーされることに注意してください。
パーミッションを指定してファイルをコピーする-Ansible Copy Examples
- copy: src: /srd/myfiles/abc.conf dest: /etc/abc.conf owner: abc group: abc mode: 0644
上記のコードを使用すると、異なるパーミッションでファイルをコピーすることが可能です。 ここでは、0644と同等のシンボリックモードを使用してパーミッションに言及しています。
Copy Content to Remote server-Ansible Copy Examples
copy:content: "Hello devops"dest: /tmp/devops.txt
このモジュールを使用すると、コンテンツを書き込み、そのコンテンツをリモートサーバーにコピーすることができます。 ファイルがリモートロケーションに存在しない場合、その devops.txt ファイルを作成し、そのコンテンツを devops.txt に書き込みます。 devops.txtはファイル名であり、任意のファイル名を付けることができる。 ansible copy モジュールを使用すると、コンテンツを含むファイルを作成できます。
ansible copy についてもっと知りたい場合は、ansible documentation を参照してください。