여러 가지 방법으로 Ubuntu 컴퓨터의 IP 주소 및 호스트 이름을 관리할 수 있습니다. 시스템 관리자는 nmcli, netplan, hostname, 그리고 hostnamectl 도구를 사용할 수 있습니다. 이 도구들은 개별적으로도 잘 작동하지만, 이 도구들을 활용하여 자동화 기능을 향상시킬 수 있는 방법이 있을까요?
여러분은 설정을 처리할 Bash 스크립트를 만들 수 있습니다. 이 기사에서는 입력을 허용하는 Bash 스크립트를 사용하여 새로운 호스트 이름을 설정하고 IP 주소 정보를 구성하는 방법을 배우게 됩니다.
각 예제는 서로 기반으로 구축됩니다. 기사의 끝에 도달하면 Ubuntu 호스트에서 사용할 수 있는 완전히 기능적인 구성 스크립트를 작성하는 데 필요한 지식을 갖추게 됩니다.
전제 조건
이 튜토리얼을 따라가려면 Bash 셸 스크립팅에 능숙할 필요는 없지만 다음 요구 사항이 충족되어 있는지 확인하세요.
- A host running on Ubuntu. This tutorial uses Ubuntu 22.04 LTS.
- Ubuntu 호스트에 대한 루트 권한.
- A text editor, such as
vim
,nano
, or VSCode.
hostnamectl로 호스트 이름 설정하기
모든 호스트는 고유한 이름을 가져야 합니다. hostnamectl 명령을 사용하면 호스트 이름을 조회하거나 변경할 수 있습니다. 이 경우에는 다음과 같은 구문을 사용하여 현재 호스트 이름을 원하는 대로 변경할 수 있습니다.
hostnamectl 명령을 실행하면 일반적인 매개변수로 set-hostname이라는 매개변수를 사용하고 새 호스트 이름으로 이어지는 이중(“”) 인용부호로 된 문자열 값을 입력합니다. 이 명령을 수동으로 실행하는 경우에도 문제없이 작동해야 합니다.
그러나 사용자 입력을 허용하는 스크립트에 이를 넣고 싶다면 어떻게 해야 할까요? 먼저 read 명령을 사용한 다음 -p 매개변수를 사용하여 프롬프트를 나타내는 문자열과 이 프롬프트에 대한 사용자 입력 내용을 알려줍니다. 그런 다음 입력을 NEW_HOSTNAME이라는 새 변수에 저장합니다.
호스트 이름이 NEW_HOSTNAME 변수에 저장되면 다음과 같이 해당 변수를 hostnamectl 명령에 제공할 수 있습니다.
그리고 여기까지입니다! 이 두 개의 한 줄 명령을 결합하면 스크립트에서 작동할 수 있습니다! 그러나 추가 작업이 하나 더 있습니다: 네트워크 옵션 구성입니다.
netplan
을 사용하여 IP 주소 정보 설정
netplan 명령은 현대적인 Ubuntu 호스트의 네트워크 인터페이스의 IP 주소 정보를 관리하는 데 사용되는 사실상의 방법입니다. netplan 도구는 YAML 구성 파일을 사용하여 다양한 백엔드에서 네트워크 구성을 추상화합니다.
netplan 도구는 시스템 부팅 중에 이러한 구성 파일을 읽고 대상 네트워크 인터페이스에 적용합니다. 이것이 중요한 이유는 무엇일까요?
네트워크 구성을 YAML로 가지고 있으면 구성을 Git 저장소로 시작하여 구성을 저장하거나 백업할 수 있습니다. 그리고 Git은 변경 추적 기능을 제공하므로 동일한 구성 파일을 사용하여 미래의 배포에 대해 다시 만들 필요 없이 CI/CD 파이프라인을 사용할 수 있습니다. 당신은, 데브옵스를 아시나요!
구성 파일에 행을 추가하기 전에 touch 명령어를 사용하여 구성 파일을 생성해야 합니다.
위의 명령은 새 구성 파일을 홈 디렉토리에 배치합니다. 여기서는 echo 명령어를 실행하여 원하는 대로 입력하고 입력 리다이렉션을 사용하여 STDOUT > (추가) 및 >> (추가)를 사용하여 구성 파일에 행별로 주입합니다.
참고: YAML에서 들여쓰기에 탭이 아닌 이중 공백을 사용하십시오.
각 echo 명령으로 STDOUT을 사용하여 적절한 간격으로 YAML 구성을 작성합니다. 또는 텍스트 편집기를 사용하여 이 파일을 수동으로 작성할 수도 있습니다. 그러나 파일을 수동으로 작성할 필요는 없습니다.
대신, 사용자에게 동일한 read
명령어를 사용하여 필요한 IP 주소 정보를 입력하도록 요청하십시오.
팁: Ubuntu에서 모든 네트워크 인터페이스 정보를 나열하는 한 가지 방법은 ip address 명령을 실행하는 것입니다.
그거 좋아. 이제 사용자 입력을 몇 가지 변수로 다시 리디렉션해서 스크립트에서 사용할 수 있어.
이 튜토리얼에서 다루지 않은 다양한 속성들이 많이 있어. 추가로 자주 사용되는 속성을 보고 싶다면 netplan man 페이지를 읽어보세요.
네트워크 옵션을 모두 설정했으니, 이제 단일 스크립트를 작성해보자!
Bash 스크립트에 모든 내용을 통합할 거야
. 이제 선택한 편집기를 열고 아래 코드를 붙여넣고 파일을 ~/host_deploy.sh
로 저장해봐.
스크립트를 실행하려면 터미널에서 아래 명령을 사용하여 스크립트를 호출하세요.
스크립트는 새 호스트 이름과 IP 주소 정보를 입력하도록 요청하고 변경 사항이 적용되려면 호스트를 다시 부팅해야 함을 상기시킵니다.
이제 사용자 디렉토리에 작동하는 스크립트가 있으므로 골든 이미지를 만들어 재사용하거나 기술자 및 이 작업을 정기적으로 수행하는 사람들과 공유할 수 있습니다.
결론
축하합니다! 기사 끝까지 도달하여 반복적으로 사용할 수 있는 완전한 기능의 Bash 스크립트를 작성했습니다.
이 스크립트를 Ansible과 함께 사용하고 Ansible 플레이를 사용하여 질문에 답할 수도 있습니다. 이 자습서의 작업은 빌드 및 배포 스크립트에서 사용할 수 있는 초기 구성 항목의 작은 샘플에 불과합니다.
이제 사용자 입력을 수락하고 Bash 스크립트를 사용하여 기본 시스템 매개변수를 설정하며 해당 기술을 Ubuntu Linux에서 호스트 이름 및 IP 주소를 변경하는 데 적용하는 방법을 알게 되었습니다.
Source:
https://adamtheautomator.com/change-linux-ip-hostname-bash-script/