Ansibleで相対パスを評価する方法はありますか?
tasks:
- name: Run docker containers
include: tasks/dockerup.yml src_code='..'
基本的に、ソースコードパスをタスクに渡すことに興味があります。ソースコードが{{ansible_inventory}}
の親パスである場合がありますが、そのままではそれを達成する方法はありません。
----詳細情報----
プロジェクトの構造:
myproj
app
deploy
deploy.yml
deploy.yml
からapp
にアクセスしようとしています。
ソースを確認したところ、知らないフィルタが見つかりました。以前の文字列操作を忘れて、それはこれは簡単です:
{{ inventory_dir | dirname }}
以前の答え:
これはそれを行うはずです:
{{ inventory_dir.split("/")[0:-1]|join("/") }}
以前の答え:
します{{ inventory_dir }}
何をしたいですか?
利用可能な、
inventory_dir
は、Ansibleのインベントリホストファイルを保持するディレクトリのパス名です
または、「親ディレクトリ」がタスクの役割のパスである場合は、{{ role_path }}
トリックをするかもしれません。
そして最後に、
role_path
は、現在のロールのパス名を返します(1.8以降)。これはロール内でのみ機能します。
現在のプレイブックの実行への絶対パスに{{playbook_dir}}
を使用できます。私にとってはそれが最善の方法です。なぜなら、あなたは通常、あなたのプレイブックがどこにあるか知っているからです。
OK、回避策は、このために別のタスクを使用することです:
tasks:
- name: Get source code absolute path
Shell: dirname '{{inventory_dir}}'
register: dirname
- name: Run docker containers
include: tasks/dockerup.yml src_code={{dirname.stdout}}
inventory_dir
について教えてくれたウドンダンに感謝します。