Ansible、lineinfileモジュールで使用する特定の正規表現パターンを取得しようとしています。

Ansible、lineinfileモジュールで使用する特定の正規表現パターンを取得しようとしています。

上記の質問に従って:「Ansible、lineinfileモジュールで使用する特定の正規表現パターンを取得しようとしています。」

本質的に、私は2つの別々のプレーではなく、1つのプレーで動作するように努めており、これには正規表現が必要です。 sedで動作するいくつかのバリエーションを試しましたが、ここでは動作しないようです。たぶん私は狂ったかもしれません。私がやろうとしていることの例は次のとおりです。

  - name: Change file contents on CentOS and Redhat servers.
    lineinfile:
    dest: /etc/blah/randomfile
    regexp: '^ThisValueHere|^#ThisValueHere'
    line: 'ThisValueHere no'
    when: (ansible_distribution == "CentOS")  or (ansible_distribution == "RedHat")

(はい、間違ったyml構文は無視してください。実際のプレイブックでは大丈夫です。)

デフォルトでは、(ThisValueHere、OR、#ThisValueHere)で始まる行を一致させ、その行を次に置き換えたいと思います。 (ThisValueHere no)

しかし、うまく動作しないようです。おそらく正規表現について詳しく見てみる必要があります。とにかく誰でも提案があれば大変感謝します!

また、ansibleで正規表現をうまく使うための「核心」を提供するリンクがあれば、それも非常に役に立ちます。

ベストアンサー1

仕事で動作しますが、replace提供lineinfileしません。複数行Python正規表現。

- name: Change file contents on CentOS and Redhat servers. replace: dest: /etc/blah/randomfile regexp: '^(#?ThisValueHere)' replace: 'ThisValueHere no' when: (ansible_distribution == "CentOS") or (ansible_distribution == "RedHat")

おすすめ記事