Ansible:copyモジュールについてメモ
*ansible 2.9.6での設定を想定しています
copyモジュールはコントロールノードのファイルをリモートホストへコピーするモジュールです。
srcでコピー元のファイル、destでコピー先を指定します。
--- - hosts: all tasks: - name: copied hello.txt copy: src: hello.txt dest: /tmp/hello.txt
mode:ファイルの権限設定
modeオプションをつけることでコピー先のファイルの権限を設定できます。
modeオプションをつけない場合、コピー元のファイルと同じ権限でコピー先のファイルは作られます。
linuxのchmodコマンドのように8進数で権限を指定できます。ansibleに8進数として認識させるため「0644」のように先頭に0をつけるのがポイントです。先頭に0をつけないとansibleに10進数として認識されてしまい予期しない動作をする可能性があります。
--- - hosts: all tasks: - name: copied hello.txt copy: src: hello.txt dest: /tmp/hello.txt mode: 0644
ちなみに、'644'のようにシングルクォートで囲んでもOKです。
--- - hosts: all tasks: - name: copied hello.txt copy: src: hello.txt dest: /tmp/hello.txt mode: '644'
force:コピーする条件を指定
forceオプションでyesを指定すれば、コピー先に既にファイルが存在する場合、ファイルの中身を比較して差分がある場合はコピーを実施します。noを指定した場合、コピー先にファイルが存在しない場合にのみ、コピーを実施します。なお、forceオプションはデフォルトでyesが指定されています。
--- - hosts: all tasks: - name: copied hello.txt copy: src: hello.txt dest: /tmp/hello.txt mode: 0644 force: no
backup:コピー時にバックアップを取得
backupオプションでyesを指定すると、コピー先に既にファイルが存在する場合、そのファイルのバックアップを取得します。
バックアップはコピー先のファイルが存在するディレクトリと同じディレクトリに作成されます。バックアップのファイル名は「(元のファイル名).(タイムスタンプ)」となります。
下の例であればバックアップとして「/tmp/hello.txt.2020-12-31@12:00:11~」のようなファイルが作成されます。
--- - hosts: all tasks: - name: copied hello.txt copy: src: hello.txt dest: /tmp/hello.txt mode: 0644 backup: yes