てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] パス文字列からディレクトリ名や親ディレクトリ名を遡って抽出する

はじめに

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