쉘 스크립트에서 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

스크립트를 수정할 수 있나요?

가능하다면 스크립트 시작 부분에 필요한 두 개의 매개변수를 가져옵니다. 예를 들면 다음과 같습니다.

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

그런 다음 플레이북에서 다음과 같이 스크립트를 호출할 수 있습니다.

myscript {{remote_host}} {{ansible_host}}

앤서블을 플레이한 지 꽤 됐어요. 구문이 올바른지 확인하세요 :)

관련 정보