AnsibleのModule:copy
お疲れ様です。伊藤です。
AnsibleのModuleを使っていきます。よく使うModuleから順に記録を残していきたいと思います。
なお、情報はほぼ公式からのものになります。英語なので翻訳してお届けいたします。
まずはモジュールの説明文ですが、下記になります。
copyモジュールは、ローカルマシンまたはリモートマシンからリモートマシン上の場所にファイルをコピーします。 fetchモジュールを使用して、リモートロケーションからローカルボックスにファイルをコピーします。コピーしたファイルに変数補間が必要な場合は、templateモジュールを使用します。
簡単に言うとAnsibleの管理サーバから管理対象サーバにファイルをコピーすると、それだけですね。他の部分はとりあえず無視でよいと思います。Moduleで重要なものは基本はパラメータです。このあたりさえ押さえておけば使う分には問題ありません。
早速パラメータについて記述していきます。
パラメータ | 必須 | デフォルト | 選択肢 | 備考 |
---|---|---|---|---|
attributes | no | None | ファイルまたはディレクトリに必要な属性。サポートされているフラグを取得するには、ターゲットシステムのchattrのマニュアルページを参照してください。この文字列には、lsattrで表示されるものと同じ順序で属性を含める必要があります。 | |
backup | no | no | yes or no | タイムスタンプ情報を含むバックアップファイルを作成して、元のファイルを戻すことができます。 |
content | no | srcの代わりに使用すると、ファイルの内容を指定された値に直接設定します。これは単純な値のためのもので、複雑なものや書式を使ってテンプレートモジュールに切り替えてください。 | ||
dest | yes | ファイルをコピーするリモート絶対パス。 srcがディレクトリの場合、これもディレクトリでなければなりません。 | ||
directory_mode | no | 再帰コピーを実行するときは、ディレクトリのモードを設定します。これが設定されていない場合は、システムのデフォルトを使用します。このモードは、新しく作成されたディレクトリにのみ設定され、既存のディレクトリには影響しません。 | ||
follow | no | no | yes or no | このフラグは、存在する場合、ファイルシステムのリンクが続くことを示します。 |
force | no | yes | yes or no | デフォルトはyesで、内容がsrcと異なる場合はリモートファイルを置き換えます。noの場合、ファイルは宛先が存在しない場合にのみ転送されます。 |
group | no | chownに与えられるような、ファイル/ディレクトリを所有すべきグループの名前。 | ||
mode | no | ファイルまたはディレクトリをモードにする必要があります。 / usr / bin / chmodには、実際にはモードが0644のような8進数であることを覚えておいてください。先行ゼロを離れると予期せぬ結果が出る可能性が高い。バージョン1.8では、モードはシンボリックモード(たとえば、u + rwxまたはu = rw、g = r、o = r)として指定できます。 | ||
owner | no | chownに与えられるように、ファイル/ディレクトリを所有すべきユーザの名前。 | ||
remote_src | no | False | True or False | Falseの場合、起点/マスタマシンでsrcを検索し、Trueであればsrcのリモート/ターゲットマシンに移動します。デフォルトはFalseです。現在、remote_srcは再帰的コピーをサポートしていません。 |
selevel | no | s0 | SELinuxファイルコンテキストのレベル部分。これはMLS / MCS属性であり、範囲とも呼ばれます。 _default機能はseuserと同じように機能します。 | |
serole | no | SELinuxファイルコンテキストの役割部分、_default機能はseuserと同じように機能します。 | ||
setype | no | SELinuxファイルコンテキストの一部を入力し、_default機能はseuserと同じ働きをします。 | ||
seuser | no | SELinuxファイルコンテキストのユーザ部分。該当する場合、システムポリシーをデフォルトにします。 _defaultに設定すると、利用可能であれば、ポリシーのユーザー部分が使用されます。 | ||
src | no | リモートサーバーにコピーするファイルへのローカルパス。絶対的であっても相対的であってもよい。 pathがディレクトリの場合、再帰的にコピーされます。この場合、パスが "/"で終わると、そのディレクトリの内容のみがコピー先にコピーされます。それ以外の場合は、 "/"で終わらない場合は、すべての内容のディレクトリ自体がコピーされます。この動作はRsyncに似ています。 | ||
unsafe_writes | no | 通常、このモジュールでは、アトミック操作を使用してデータの破損やターゲットファイルからの一貫性のない読み込みを防止しています。 1つの例は、ドッカーがマウントしたファイルです。アトミックに更新することはできず、安全でない方法でのみ実行できます。このブールオプションは、他の選択肢がない場合にファイルを更新する安全でない方法にフォールバックすることを可能にします。これは競合状態になり、データが破損する可能性があることに注意してください。 | ||
validate | no | 場所にコピーする前に実行する検証コマンド。検証するファイルへのパスは、以下の例のように存在しなければならない '%s'経由で渡されます。コマンドは安全に渡され、拡張やパイプなどのシェル機能は機能しません。 |
いやあ、多いですね。こちらのパラメータを利用してPlaybookの記述例を下記に記載します。(これも公式のものですが。。)
# Ansible Playbooksの例 - copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: 0644 # 上記と同じ例ですが、0644に相当する記号モードを使用します - copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: "u=rw,g=r,o=r" # 別の象徴的なモードの例。いくつかのパーミッションを追加し、他を削除する - copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: "u+rw,g-wx,o-rwx" # 新しい ntp.confファイルを所定の場所にコピーし、コピーされたバージョンと異なる場合はオリジナルをバックアップする - copy: src: /mine/ntp.conf dest: /etc/ntp.conf owner: root group: root mode: 0644 backup: yes # visudoで検証をパスした後、新しい "sudoers"ファイルを適切な場所にコピーする - copy: src: /mine/sudoers dest: /etc/sudoers validate: 'visudo -cf %s' # 編集のためにリモートマシン上の "sudoers"ファイルをコピーする - copy: remote_src: true src: /etc/sudoers dest: /etc/sudoers.edit
戻り値は下記の通りになります。
名前 | 説明 | 値が戻る場合 | 型 | サンプル |
---|---|---|---|---|
src | ターゲットマシン上のコピーに使用されるソースファイル | changed | string | /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source |
backup_file | 作成されたバックアップファイルの名前 | changed and if backup=yes | string | /path/to/file.txt.2015-02-12@22:09~ |
uid | 実行後のファイルの所有者ID | success | int | 100 |
dest | 宛先ファイル/パス | success | string | /path/to/file.txt |
checksum | コピーを実行した後のファイルのsha1チェックサム | success | string | 6e642bb8dd5c2e027bf21dd923337cbb4214f827 |
md5sum | コピーを実行した後のファイルのmd5チェックサム | when supported | string | 2a5aeecc61dc98c4d780b14b330e3282 |
state | 実行後のターゲットの状態 | success | string | file |
gid | 実行後のファイルのグループID | success | int | 100 |
mode | 実行後のターゲットのパーミッション | success | string | 0644 |
owner | 実行後のファイルの所有者 | success | string | httpd |
group | 実行後のファイルのグループ | success | string | httpd |
size | 実行後のターゲットのサイズ | success | int | 1220 |
以上です。戻り値については正常にファイルがコピーされたことの確認などに使用できるかと思います。いったんこちらで記事をアップしますが、後程実用例を挙げるかもしれません。
以上です。お疲れ様でした。