ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

AnsibleのModule:file

お疲れ様です。伊藤です。

引き続きAnsibleのModuleについて記載していきます。前回よく使うModuleとして順番的にはcronになるのですが、よく使いそうな順に公開していきたいと思いますので次はfileです。こちらも公式のHP情報から翻訳した内容をお届けします。


説明文は下記になります。
ファイル、シンボリックリンク、およびディレクトリの属性を設定するか、ファイル/シンボリックリンク/ディレクトリを削除します。他のモジュールの多くは、コピー、テンプレート、アセンブルなど、ファイルモジュールと同じオプションをサポートしています。
ファイルを削除したり作成したり権限を変えれる、mkdir + touch + chmod + rmってところですかね。こちらも使い方や機能は難しくないのですが、オプションが大量にあります。


オプションはこちらです。

パラメータ 必須 デフォルト 選択肢 備考
attributes no None ファイルまたはディレクトリに必要な属性。 サポートされているフラグを取得するには、ターゲットシステムの chattr のマニュアルページを参照してください。 この文字列には、 lsattr で表示されているものと同じ順序で属性を含める必要があります。
follow no no yes no このフラグは、存在する場合、ファイルシステムのリンクが続くことを示します。
force no no yes no シンボリックリンクの作成を強制するのは2つの場合です:ソースファイルは存在しませんが(後で表示されます)。 送信先が存在し、ファイルである(したがって、 "path"ファイルのリンクを解除し、その代わりに "src"ファイルへのシンボリックリンクを作成する必要があります)。
group no chown に供給されるような、ファイル/ディレクトリを所有すべきグループの名前。
mode no ファイルまたはディレクトリをモードにする必要があります。 / usr / bin / chmod でモードが実際には0644のような8進数であることを覚えている人のために。 先行ゼロを離れると、予期しない結果が生じる可能性があります。 バージョン1.8では、モードはシンボリックモード(たとえば、 u + rwx または u = rw、g = r、o = r )として指定できます。
owner no chown に供給されるファイル/ディレクトリを所有するユーザーの名前。
path yes 管理されているファイルへのパス。 エイリアス: dest 、名前
recurse no no yes no 指定されたファイル属性を再帰的に設定します(state = directoryにのみ適用)
selevel no s0 SELinuxファイルコンテキストのレベル部分。 これは、MLS / MCS属性であり、 range と呼ばれることもあります。 _default 機能は seuser のように機能します。
serole no SELinuxファイルコンテキストの役割部分、 _default 機能は seuser のように機能します。
setype no SELinuxファイルコンテキストのタイプ部分、 _default 機能は seuser のように機能します。
seuser no SELinuxファイルコンテキストのユーザ部分。 該当する場合、システムポリシーをデフォルトにします。 _default に設定されている場合、利用可能であれば、ポリシーの user 部分が使用されます。
src no リンクするファイルのパス( state = link にのみ適用されます)。 絶対パス相対パス、存在しないパスを受け入れます。 相対パスは展開されません。
state no file file link directory hard touch absent directory の場合、存在するすべてのサブディレクトリは存在しない場合に作成されます。link の場合、シンボリックリンクが作成または変更されます。 ハードリンクには hard を使用します。 absent の場合、ディレクトリは再帰的に削除され、ファイルやシンボリックリンクはリンク解除されます。 状態が変更されていないため path が存在しない場合、 file は失敗しません。 touch (1.4の新機能)の場合、 path が存在しない場合は空のファイルが作成され、既存のファイルやディレクトリには更新されたファイルアクセスと変更時刻 `touch`がコマンドラインから動作するのと同じように)。
unsafe_writes no 通常、このモジュールでは、アトミック操作を使用してデータの破損やターゲットファイルからの一貫性のない読み込みを防止しています。 1つの例は、ドッカーがマウントしたファイルです。アトミックに更新することはできず、安全でない方法でのみ実行できます。このブールオプションは、他の選択肢がない場合にファイルを更新する安全でない方法にフォールバックすることを可能にします。これは競合状態になり、データが破損する可能性があることに注意してください。


プレイブックの例は下記になります。

# ファイルの所有権、グループ、モードを変更します。 8進数を使用してモードを指定する場合、最初の桁は常に0にする必要があります。
- file:
    path: /etc/foo.conf
    owner: foo
    group: foo
    mode: 0644
- file:
    src: /file/to/link/to
    dest: /path/to/symlink
    owner: foo
    group: foo
    state: link
- file:
    src: '/tmp/{{ item.src }}'
    dest: '{{ item.dest }}'
    state: link
  with_items:
    - { src: 'x', dest: 'y' }
    - { src: 'z', dest: 'k' }

# ファイルに触れる、記号モードを使用してパーミッションを設定する(0644に相当)
- file:
    path: /etc/foo.conf
    state: touch
    mode: "u=rw,g=r,o=r"

# 同じファイルに触れるが、いくつかのパーミッションを追加/削除する
- file:
    path: /etc/foo.conf
    state: touch
    mode: "u+rw,g-wx,o-rwx"

# ディレクトリが存在しない場合は作成する
- file:
    path: /etc/some_directory
    state: directory
    mode: 0755

戻り値については存在しなさそうです。この辺りはModuleを作っている方が別々なので癖が出ますね。
以上です。お疲れ様でした。