以下の在庫ファイルがあります。
[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}}
アンサーブルをプレイしてからかなりです。構文が正しいことを確認してください:)