Ansible を使用して、ini 形式で構成ファイルを作成します。ini_file
オプションと値のペアを持つモジュールを使用すると、期待どおりに動作します。例:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
option: foo
value: bar
結果は次のようになります:
[lol]
foo = bar
ただし、次のように、オプションのない特定のセクションを存在させたいのです。
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
ok
しかし、タスクについて報告するだけで、次のタスクに進みます。
詳細モードを使用すると、次のようになります:ok: [localhost] => {"changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}
モジュールを使用してオプションのないセクションを作成するにはどうすればよいですか?
答え1
ini は非公式の標準ですが、私の理解では、オプションのないセクションにはあまり意味がありません。これが、これが Ansible に実装されていない理由であると最初に推測します。
ini
-Moduleを使用する代わりに、lineinfile モジュールセクションがiniファイルに存在することを確認します。
答え2
設定ファイルを構築するにはテンプレートを使用します。これが適切な方法です。ini_file
モジュールはファイルの編集にのみ使用してください。lineinfile モジュールは使用せず、最後の手段として使用してください。
ルール0)可能であれば、代わりにテンプレート モジュールを使用してください。これにより、完全な制御と検証が可能になります。Brian Coca (シニア ソフトウェア エンジニア、Ansible、Red Hat)
答え3
回避策としては、オプションに空白/コメント付きのコードを指定して、値を許可しないことです。
- ini_file:
dest: '/tmp/telegraf.conf'
section: '[inputs.interrupts]'
option: ' ## no configuration'
allow_no_value: yes
ただし、セクションにすでに値がある場合は、オプションと値のないセクションが必要な場合は、それを削除する必要がありstate: absent
、その後追加します。申し訳ありませんが、実際の答えも見つかりませんでした。