シェルスクリプトからAnsible変数を呼び出す

シェルスクリプトからAnsible変数を呼び出す

以下の在庫ファイルがあります。

[routers]
iLAB-SR-12-R2 ansible_host=192.168.82.211
iLAB-SR-12-R3 ansible_host=192.168.82.212
iLAB-SR-12-R4 ansible_host=192.168.82.213

複数のファイルを基本ファイルと比較するシェルスクリプトがあります。

#!/bin/bash
config_location="/etc/ansible/test"
master="/etc/ansible/test-master"
cd $config_location
file=`ls -l | grep "^-" | awk '{print $NF}'`
echo "Hostname      IpAddress      Comments" > /etc/ansible/output.csv
for i in $file
do
  if diff -c $i $master > "/etc/ansible/test-difference/diff_$i" ;then
    echo "$i                    NoChange"
  else
    echo "$i                    SomeChange"
  fi
done >> /etc/ansible/output.csv

問題は、可能であれば{{remote_host}}を使用して私のoutput.csvファイルのIPアドレスを取得することです。 ipaddressを取得するためにスクリプトから変数{{ansible_host}}をどのように呼び出すことができますか?それともどのような方法がありますか?

以下は私のサンプルoutput.csvファイルですが、IPアドレスは空です。

Hostname   Ipaddress   Comments
Test1                   Somechanges
Test2                   Nochanges

誰もがインベントリファイルからIPアドレスを取得するのに役立ちますか?よろしくお願いします。

ベストアンサー1

スクリプトを変更できますか?

可能であれば、スクリプトの先頭に必要な2つのパラメータを取得します。たとえば、次のようになります。

remote_host="$1"
ansible_host="$2"

その後、Playbookで次のようにスクリプトを呼び出すことができます。

myscript {{remote_host}} {{ansible_host}}

アンサーブルをプレイしてからかなりです。構文が正しいことを確認してください:)

おすすめ記事