ansibleを使用して構成ファイルの特定のセクションにデータを挿入する

ansibleを使用して構成ファイルの特定のセクションにデータを挿入する

ansibleを使用する際に特別な問題があります。この質問は非常に奇妙で危険です。ファイルの特定の部分にデータを挿入するコードを書きました。つまり、[database]sayの後に行を追加します/etc/cinder/cinder.conf

問題は時々タグの後ろにコンテンツを正しく追加し[database]ますが、時にはファイルの1行を見て混乱し、# put ur infore here for [database] 実際に必要な場所の代わりにその下に必要な行を追加することです。

   - name: Adding Entries in "/etc/cinder/cinder.conf"
     lineinfile:
      dest: "/etc/cinder/cinder.conf"
      insertafter:  "{{ item.inserts }}"
      state: present
      line: "{{ item.lines }}"
     with_items:
      - { inserts: '\[database\]', lines: 'rpc_backend = rabbit' }

このような状況は、本番環境では非常に危険です!データを正しく追加する方法は?

答え1

コメントの一致を防ぐには、正規表現を行の先頭に固定します。

- { inserts: '^\[database\]', lines: 'rpc_backend = rabbit' }

答え2

ini_fileモジュールが利用可能general collection:

- name: Adding Entries in "/etc/cinder/cinder.conf"
  community.general.ini_file:
    path: "/etc/cinder/cinder.conf"
    section: database
    option: rpc_backend
    value: rabbit
    backup: true

コレクションをインストールするには、次を実行します。

$ ansible-galaxy collection install community.general

requirements.yamlまたは、次のように追加します。

collections:
  - name: community.general
    version: 5.0.1

その後実行

$ ansible-galaxy install -r requirements.yaml

関連情報