다른 네트워크로 이동 중인 서버 그룹이 있습니다. 호스트 이름과 해당 새 IP 주소가 포함된 파일이 있습니다. Ansible을 사용하여 이를 달성하는 방법을 살펴봤지만 이를 위해서는 각 서버마다 고유한 플레이북이 필요합니다. 스크립팅을 시도했지만 동일한 문제가 발생했습니다.
누군가가 예를 들어 제안할 수 있습니까? 루트로 로그인할 수 있다고 가정하면 외부 서버에서 2개 이상의 서버 IP 주소를 어떻게 변경합니까?
Ansible 플레이북이 선호됩니다.
답변1
우리 의 인벤토리에 serverA
, 가 있다고 가정합니다 serverB
. serverC
새로운 IP 주소가 필요합니다.
따라서 첫 번째 단계는 host_vars
디렉터리에 서버 이름을 딴 파일을 만들고 새 IP 주소를 변수로 쓰는 것입니다.
파일 예 host_vars/serverA
:
new_ip: 10.1.0.27
serverB
해당 주소에 대해 동일한 작업을 수행합니다 . serverC
필요한 경우 이를 네트워크 인터페이스 이름으로 확장할 수도 있습니다.
다음으로, 이전에 정의된 변수를 사용하는 플레이북을 만듭니다. 이것은 ip
존재하지 않습니다. 여기서는 이 변수의 사용법을 보여드리겠습니다. 보다앤서블 문서귀하의 요구에 적합한 모듈이 있으면, 그렇지 않으면 command
/ 를 사용하십시오 shell
.
- name: Change IP
hosts: serverA serverB serverC
become: yes
tasks:
- name: Set new IP adress
ip: "{{ new_ip }}"
interface: eth0
또한 연결이 끊어질 수도 있습니다 ansible
.이 질문은 SO에서 나왔습니다.문제를 처리하고 연결을 계속 실행하는 방법을 보여줍니다.