独自のカスタムライブラリを作成し、リポジトリの共通フォルダーにカスタムライブラリを追加しました。そのため、変数を動的に渡す必要があります。これは秘密のパスワードなので、ansibleで「vault」を使用しています。
そのため、私の要件は、include_vars
をホストの前にtasks\main.yml
に渡す方法です。
例:mytasks.yml
- include_vars: sample_vault.yml
- include: sample_tasks.yml
- hosts: localhost
tasks:
name: "free task"
command: ls -a
このような私のディレクトリ構造:
myfolder
- common
-library
-my file.py
- sample_tasks.yml
- mytasks
-mytasks.yml(my main master playbook file)
-sample_vault.yml (note:i create this using vault for confidential purpose)
- roles
-myrole
ここでは、ansibleを使用してホストタスクを実行する前に、sample_vault.yml
ファイルで渡された変数を使用してsample_tasksファイルを実行する必要があります。追加の変数を使用すると、パスワードが表示されるため、必要ありません。
include_vars
ファイルでtasks/main.yml
を使用すると、次のエラーが表示されます。
エラー! 「include_vars」はPlayの有効な属性ではありません
この方法ではinclude_vars
を使用できません。tasks
でのみ使用できます。
_sample_tasks.yml
がタスクのリストである場合、プレイブックレベルでも使用できません。説明については、私の その他の回答 を参照してください。
次のようにvars_files
を使用できます。
- hosts: localhost
vars_files:
- sample_vault.yml
tasks:
name: "free task"
command: ls -a
または、ファイルを追加の変数として渡します。
ansible-playbook --ask-vault-pass -e @sample_vault.yml myplaybook.yml