![쉘 스크립트에서 Ansible 변수 호출](https://linux55.com/image/161865/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20Ansible%20%EB%B3%80%EC%88%98%20%ED%98%B8%EC%B6%9C.png)
다음과 같은 인벤토리 파일이 있습니다.
[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}}
앤서블을 플레이한 지 꽤 됐어요. 구문이 올바른지 확인하세요 :)