1. ホーム
  2. file

[解決済み] Ansibleで空のファイルを作成するには?

2022-07-11 09:24:48

質問

Ansible を使って、空のファイルを作成する最も簡単な方法は何ですか。私は、空のファイルを files ディレクトリに保存し、それをリモートホストにコピーすることができることは知っていますが、それはやや不満足だと思います。

もうひとつの方法は、リモート ホストでファイルをタッチすることです。

- name: create fake 'nologin' shell
  file: path=/etc/nologin state=touch owner=root group=sys mode=0555

しかし、そうするとファイルが毎回タッチされ、ログに黄色い線として表示され、これも不満です...。

この単純な問題に対して、何か良い解決策はないでしょうか?

どのように解決するのですか?

fileモジュールのドキュメントには

もし state=file の場合、ファイルが存在しなければ作成されません。そのような動作をさせたい場合は、copy または template モジュールを参照してください。

そこで コピーモジュール を使用し force=no を使って、ファイルがまだ存在しないときだけ新しい空のファイルを作成します(ファイルが存在する場合は、その内容は保持されます)。

- name: ensure file exists
  copy:
    content: ""
    dest: /etc/nologin
    force: no
    group: sys
    owner: root
    mode: 0555

これは宣言的でエレガントなソリューションです。