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

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

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

機能

ファイルやシンボリックリンクディレクトリを作成、削除、属性変更が出来るモジュール
以下のような操作ができます。 + 指定したファイル/ディレクトリのパーミッション変更 + 空ファイルの作成 + ディレクトリの新規作成 + ハードリンク/シンボリックリンクの作成/変更


使用例

- file:
  path=/usr/local/nginx
  state=directory
  mode=0755

ディレクトリの中身すべてのオーナーをroot:rootに変更

- file:
  path=/usr/local/nginx
  state=directory
  owner=root
  group=root
  recurse=yes

ディレクトリのシンボリックリンクを作成

- file:
  src=/usr/local/nginx
  state=link


主なパラメータ

パラメータ 必須 デフォルト値 選択肢 説明
path 対象のファイル、ディレクトリを指定
パラメータ名は「dest」か「name」でも可能
state file file
link
directory
hard
touch
absent
file:ファイルを指定
link:シンボリックリンクを指定
directory:ディレクトリを指定
hard:ハードリンクを指定
touch:指定したファイルが存在しない場合、空ファイルを作成する
absent:ファイル、シンボリックリンクディレクトリを削除
owner - - - 所有ユーザを指定
group - - - 所有グループを指定
mode - - - パーミションを指定
src - - - リンク元を指定、state=linkの時のみ有効
recurse - no yes/no ディレクトリの中身全てを対象にするかどうか。state=directoryの時のみ有効


全パラメータ

パラメータ 必須 デフォルト値 説明
access_time none ファイルのアクセス時間を設定する必要がある場合
変更が必要な場合:デフォルトの時間形式YYYYMMDDHHMM.SS
これはpreserveがstate=[file,directory,link,hard]のデフォルトであり、state=touchのデフォルトであることを意味します。
access_time_format “%Y%m%d%H%M.%S” access_timeとともに使用する場合、使用する必要がある時間形式を示します。
デフォルトのPython形式に基づいています(time.strftimeドキュメントを参照)
attributes 結果のファイルシステムオブジェクトが持つべき属性
サポートされているフラグを取得するには、ターゲットシステムのchattrのマニュアルページを参照
この文字列には、lsattrによって表示されるものと同じ順序で属性が含まれている必要があります。=演算子がデフォルトとして想定されます
それ以外の場合は、+または-演算子を文字列に含める必要があります。
follow yes このフラグは、ファイルシステムリンクが存在する場合従います。
Ansible2.5以前はデフォルトはnoでした。
force no 次の2つの場合に、シンボリックリンクを強制的に作成します。
ソースファイルが存在しない(但し、後で表示される)
ファイルの宛先が存在する(パスファイルのリンクを解除し、代わりにsrcファイルへのシンボリックリンクを作成する必要がある。)
group 所有グループを指定
mode パーミションを指定
modification_time none このパラメータは、時刻を設定しファイルの変更時刻を変更します
変更が不要な場合:デフォルトの時間形式「YYYYMMDDHHMM.SS」を利用し現在時刻で登録
これはpreserveがstate=[file,directory,link,hard]のデフォルトであり、state=touchのデフォルトであることを意味します。
modification_time_format “%Y%m%d%H%M.%S” modify_timeを使用した場合、時間形式をこのパラメータで指定可能
owner 所有ユーザを指定
path 対象のファイル、ディレクトリを指定
パラメータ名は「dest」か「name」でも可能
recurse no ディレクトリの中身全てを対象にするかどうか。state=directoryの時のみ有効
selevel SELinuxファイルシステムオブジェクトコンテキストのlevel部分
これはMLS/MCS属性であり、rangeとも呼ばれます。
_defaultに設定すると、可能場合はポリシーのlevel部分が使用されます
serole SELinuxファイルシステムオブジェクトコンテキストのrole部分
_defaultに設定すると、可能な場合はポリシーのrole部分が使用されます
settype SELinuxファイルシステムオブジェクトコンテキストのtype部分
_defaultに設定すると、可能な場合はポリシーのtype部分が使用されます
seuser SELinuxファイルシステムオブジェクトコンテキストのuser部分
デフォルトでは、該当する場合はsystem policyを使用します
_defaultに設定すると、可能な場合はポリシーのuser部分が使用されます
src リンク元を指定、state=linkの時のみ有効
state file file:ファイルを指定
link:シンボリックリンクを指定
directory:ディレクトリを指定
hard:ハードリンクを指定
touch:指定したファイルが存在しない場合、空ファイルを作成する
absent:ファイル、シンボリックリンクディレクトリを削除
unsafe_writes no ターゲットファイルシステムオブジェクトからのデータの破損や一貫性のない読み取りを防ぐために、アトミック操作をいつ使用するかに影響を与えます。
デフォルトでは、このモジュールはアトミック操作を使用して、ターゲットファイルシステムオブジェクトからのデータのは沿うんや一貫性のない読み取りを防ぎますが、システムが構成されているのか、これを防ぐ方法で壊れている場合があります

1つの例は、Dockerにマウントされたファイルシステムオブジェクトです。
これは、コンテナ内からアトミックに更新することは出来ず、安全でない方法でのみ書き込むことができます。
このオプションを使用すると、アトミック操作が失敗した時にAnsibleがファイルシステムオブジェクトを更新する安全ではないメソッドにフォールバックできます
(但し、Ansibleに安全でない書き込みの実行を強制することはありません)

重要!安全でない書き込みは競合状態の影響を受け、データの破損につながる可能性があります。

シンボリックリンク シンボリックリンクの説明を記載

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


戻り値

Key Type Returned 説明
dest String 成功した場合
state=touch
state=hard
state=link
引数「path」に指定されたファイル/パス /path/to/file.txt
path String 成功した場合
state=absent
state=directory
state=file
引数「path」に指定されたファイル/パス /path/to/file.txt|/path/to/file.txt


ドキュメント

【Ansible Documentation】Module File

参考サイト

matsublog Ansible:fileモジュールについて