私のプレイブックに別のプレイヤーを追加する際に問題があります。私は、プレーブックを使用してクリーンなVMを展開します。その後、別のプレイブックを実行して、特定の方法でVMを設定したいと思います。新しいホストをインベントリに追加し、sshにアクセスしました。には、別のホストで定義されている変数名のプレイブックが含まれています。
私たちのチームは、サーバータイプごとにプロジェクトを設定しています。私は初期段階(localhostに対して実行中)にプロジェクトへの正しいパスを取得し、set_factを使用して "servertype_project"に配置しました。 私は(新しいVMに対して実行されている、脚本レベルで)これが機能することを期待:
- name: "Run servertype playbook ({{ project }}) on VM"
vars:
project: "{{ hostvars['localhost']['servertype_project'] }}"
include: "{{ project }}/ansible/playbook.yml"
をしかし、それはこのメッセージに構文チェックを失敗します。
ERROR! {{HOSTVARSは[ 'ローカルホスト'] [ 'servertype_project']}}: 'HOSTVARS' は未定義
私は{{HOSTVARS [ 'ローカルホスト'] [ 'servertype_project']を参照する場合、私は右の文字列を取得することができ}}}、しかし私は別のプレイブックを含めることができるレベルからではありません。
実行時に値が決まるので、set_factは変数を保存する正しい方法だと思いますが、ホスト固有のものです。私はそれをこのホストにも渡すことができる方法はありますか?あるいは、グローバルなvarのようなオプションが欠けていましたか?