はじめに
Ansible には、パス文字列からディレクトリを抽出するための ansible.builtin.dirname
というフィルターがあります。
正規表現などのパターンマッチングするより、こういう専用のフィルターがあるならそれを使うのが良いかなと思います。
応用すると、ファイルからみて親の親の親の・・ディレクトリ名を抽出できたりもします。
簡単ですが検証結果をまとめます。
- 検証環境
- ansible-core 2.16.0
サンプル
--- - hosts: localhost gather_facts: false connection: local vars: # 対象のパス文字列 file_path: /dir1/dir2/dir3/file.txt tasks: - name: dirname test 1 ansible.builtin.debug: msg: "{{ file_path | dirname }}" # /dir1/dir2/dir3 - name: dirname test 2 ansible.builtin.debug: msg: "{{ file_path | dirname | dirname }}" # /dir1/dir2