web-dev-qa-db-ja.com

ansibleでinclude_varsを使用する方法

独自のカスタムライブラリを作成し、リポジトリの共通フォルダーにカスタムライブラリを追加しました。そのため、変数を動的に渡す必要があります。これは秘密のパスワードなので、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の有効な属性ではありません

12
jake

この方法では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
24