Ansible ～fileモジュール～


Ansible Documentationのfileモジュールの内容のメモです。

# Ansible Documentation

## 概要
- ファイル、シンボリックリンク、ディレクトリの設定や削除をします。他の多くのモジュールはfileモジュールと同じオプションをサポートします。

## オプション
|頻度|パラメータ         |必須|デフォルト値      |選択肢                                               |説明                                                                   |
|:--:|:------------------|:--:|:----------------:|:---------------------------------------------------:|:----------------------------------------------------------------------|
|    |follow             |no  |no                |yes<br>no                                            |既にファイルが存在する場合置き換えない。(要確認)                       |
|    |force              |no  |no                |yes<br>no                                            |下記2ケースにおいてシンボリックリンクを強制的に作成する<br>・シンボリックリンク先のファイルが存在しない<br>・シンボリックリンク先のファイルが存在している("path"で指定したファイルのリンクを解除し、"src"で指定したファイルへのシンボリックリンクを作成する)。                |
|※  |group              |no  |-                 |-                                                    |chownコマンドで設定できる所有者グループの設定。                        |
|※  |mode               |no  |-                 |-                                                    |chmodコマンドで設定できる権限設定。8進数の指定とシンボリックモード(例を参照)での指定が可能。|
|※  |owner              |no  |-                 |-                                                    |chownコマンドで設定できる所有者ユーザの設定。                          |
|※  |path               |yes |-                 |-                                                    |ファイルパスの指定。                                                   |
|※  |recurse            |no  |no                |yes<br>no                                            |再帰的にファイル属性を変更するか(state=directoryの場合のみ)。          |
|    |selevel            |no  |s0                |-                                                    |selinuxのレベル。                                                      |
|    |serole             |no  |-                 |-                                                    |selinuxのロール。                                                      |
|    |setype             |no  |-                 |-                                                    |selinuxのタイプ。                                                      |
|    |seuser             |no  |-                 |-                                                    |selinuxのユーザ。                                                      |
|※  |src                |no  |-                 |-                                                    |実体ファイルのパスを指定(state=linkの場合のみ)|
|※  |state              |no  |file              |file<br>link<br>directory<br>hard<br>touch<br>absent |file: ファイルが既に存在する場合に指定。もし存在しない場合、copyモジュールやtemplateモジュールを使用する。<br> link: シンボリックリンクの場合に指定。<br> directory: ディレクトリの場合に指定。存在しない場合サブディレクトリとして作成される。権限は上位から継承される。(要確認)<br> hard: ハードリンクの場合の指定。<br> touch: pathで指定したファイルが存在しない場合、空ファイルを作成する。既にファイルが存在する場合、タイムスタンプが更新される。<br> absent: ディレクトリやファイル、シンボリックリンクの削除。                        |

## 例
```yaml:example.yml
- 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.path }} dest={{ item.dest }} state=link
  with_items:
    - { path: 'x', dest: 'y' }
    - { path: 'z', dest: 'k' }

# touch a file, using symbolic modes to set the permissions (equivalent to 0644)
- file: path=/etc/foo.conf state=touch mode="u=rw,g=r,o=r"

# touch the same file, but add/remove some permissions
- file: path=/etc/foo.conf state=touch mode="u+rw,g-wx,o-rwx"
```

# 参考
- [Ansible Documentation (v2.5系)](http://docs.ansible.com/file_module.html)