ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【モジュールの使い方】Copy

機能

Ansibleがインストールされている端末のローカル環境に存在する
ファイルやディレクトリをhostsで指定したサーバへ転送することが出来る。

使用例

  • 転送元(クライアントローカル側):/root/index.conf
  • 転送先(指定したサーバ側):/root/index.conf
  • 所有ユーザ、所有グループ、権限:root,root,0664
- hosts: group1
  tasks:
  - name: copy test
    copy:
      src: /root/index.conf
      dest: /root/index.conf
      owner: root
      group: root
      mode: 0664


主なパラメータ

パラメータ 必須 デフォルト値 選択肢 説明
src ローカル環境のファイル/ディレクトリパス(転送元パス)
ディレクトリの場合
・パスが"/"で終わる場合ディレクトリの中身のみ転送する
・パスの最後が"/"でない場合ディレクトリごと転送する。
dest hostsで指定したサーバのパス(転送先パス)
srcがディレクトリの場合、destもディレクトにする必要がある
owner 転送後のファイル/ディレクトリの所有ユーザ
group 転送後のファイル/ディレクトリの所有グループ
mode 転送後のファイル/ディレクトリの権限
例:"0664"、"u=rw,g=r,o=r"
force yes no
yes
yes:destが存在する場合、内容が異なればsrcで置換
no:destが存在しない場合のみsrcを転送


全パラメータ

パラメータ 必須 デフォルト値 説明
attributes ファイルの属性を指定
backup no タイムスタンプを含むバックアップファイルを作成
何らかの理由で誤って元ファイルを壊した場合に元のファイルを復元できる。
checksum 転送中のファイルのSHA1チェックサム
ファイルのコピーが成功したことを検証するために使用されます。
これが指定されない場合、ansibleはsrcファイルのローカルで計算されたチェックサムを使用します。
content srcの代わりに使用すると、ファイルの内容を指定された値に直接設定します。
destがファイルの場合にのみ機能し、ファイルが存在しない場合は作成します。
高度なフォーマットの場合、またはcontent変数が含まれている場合は、ansible.builtin.templateモジュールを使用します。
decrypt yes このオプションは、valutを使用したソースファイルの自動復号化を制御します。
dest hostsで指定したサーバのパス(転送先パス)
srcがディレクトリの場合、destもディレクトにする必要がある
directory_mode 再帰コピーを行うときは、ディレクトリのモードを設定します。
これが設定されてない場合は、システムのデフォルトが使用されます。
このモードは、新しく作成されたディレクトリのみ設定され、既存のディレクトリには影響しません。
follow no このフラグは、宛先にファイルシステムリンクが存在する場合は、それに従う必要があることを示します。
force yes yes:destが存在する場合、内容が異なればsrcで置換
no:destが存在しない場合のみsrcを転送
group 転送後のファイル/ディレクトリの所有グループ
local_follow yes このフラグは、ソースツリーにファイルシステムリンクが存在する場合は、それに従う必要があることを示します。
mode 転送後のファイル/ディレクトリの権限
例:"0664"、"u=rw,g=r,o=r"
owner 転送後のファイル/ディレクトリの所有ユーザ
remote_src no srcを転送する必要があるか、または既にリモートに存在するかどうかに影響を与える
noの場合、コントローラノードでsrcを検索します
yesの場合、管理対象(リモート)ノードでsrcを検索します

version2.8以降、remote_src再帰的コピーをサポートします
version2.6以降、remote_srcmode=preserveでのみ機能します
remote_src=yesの場合、ファイルの自動復号化は機能しません。
selevel SELinuxファイルシステムオブジェクトコンテキストのlevel部分
これはMLS/MCS属性であり、rangeとしても扱われる
_defaultに設定すると、使用可能な場合はポリシーのlevel部分が使用されます。
serole SELinuxファイルシステムオブジェクトコンテキストのrole部分
_defaultに設定すると、使用可能な場合はポリシーのrole部分が使用されます。
setype SELinuxファイルシステムオブジェクトコンテキストのtype部分
_defaultに設定すると、使用可能な場合はポリシーのtype部分が使用されます。 |
seuser SELinuxファイルシステムオブジェクトコンテキストのuser部分
これはMLS/MCS属性であり、systemとしても扱われる
_defaultに設定すると、使用可能な場合はポリシーのuser部分が使用されます。
src ローカル環境のファイル/ディレクトリパス(転送元パス)
ディレクトリの場合
・パスが"/"で終わる場合ディレクトリの中身のみ転送する
・パスの最後が"/"でない場合ディレクトリごと転送する。
unsafe_writes no ターゲットファイルシステムオブジェクトからのデータの破損や一貫性のない取り組みを防ぐために、アトミック操作を使用するタイミングに影響を与えます

デフォルトでは、このモジュールにアトミック操作を使用して、データの破損やターゲットファイルシステムオブジェクトからの一貫性のない読み取りを防ぎますが、これを防ぐ方法でシステムが構成されているのか、単に壊れている場合があります。

例1:Dockerがマウントしたファイルシステムオブジェクトです。
これは、コンテナ内からアトミックに更新することは出来ず、安全でない方法でのみ書き込みことが出来ます。

このオプションにより、Ansibleはアトミック操作が失敗し時にファイルシステムオブジェクトを更新する安全でない方法にフォールバックできます。(ただし、Ansibleに安全でない書き込みを強制することはありません)

重要!安全でない書き込みは競合状態の影響を受けやすく、データの破損につながる可能性があります。
validate 更新されたファイルを最終的な宛先にコピーする前に実行する検証コマンド

検証には一時ファイルパスが使用され、次の例のように存在する必要がある%sを介して流されます。
また、コマンドは安全に渡されるため、展開やパイプなどのシェル機能は機能しません
このオプションが提供するものよりも複雑な検証を処理する方法の例については、「複雑な構成の検証」 を参照してください。

アトミック操作 他からの割り込みがない状態にすること

戻り値

Key Type Returned 説明
backup_file String 変更されて、backup=yesの場合 作成されたバックアップファイルの名前 /path/to/file.txt.2015-02-12@22:09~
checksum String 成功した場合 コピー実行後のファイルのSHA!チェックサム 6e642bb8dd5c2e027bf21dd923337cbb4214f827
dest String 成功した場合 宛先ファイル/パス /path/to/file.txt
gid String 成功した場合 実行後のファイルのグループID 100
group String 成功した場合 実行後のファイルのグループ httpd
md5sum String サポートされている場合 コピー実行後のファイルのMD5チェックサム 2a5aeecc61dc98c4d780b14b330e3282
mode String 成功した場合 実行後のターゲットの権限 0644
owner String 成功した場合 実行後のファイルの所有者 httpd
size String 成功した場合 実行後のターゲットのサイズ 1220
src String 変更された場合 ターゲットマシンでのコピーに使用されるソースファイル /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source
state String 成功した場合 実行後のターゲットの状態 file
uid String 成功した場合 実行後のファイルの所有者ID 100

ドキュメント

【Ansible Documentation】Module Copy

参考サイト

参考サイト:copyモジュールについて