Есть несколько способов управления IP-адресом и именем хоста вашего компьютера под управлением Ubuntu. Системные администраторы могут использовать инструменты nmcli, netplan, hostname и hostnamectl. Несмотря на то, что эти инструменты хорошо справляются сами по себе, как можно интегрировать их для улучшения вашей автоматизации?
Вы можете создать Bash-скрипт, который будет обрабатывать конфигурацию за вас. В этой статье вы узнаете, как установить новое имя хоста и сконфигурировать информацию об IP-адресе, все с помощью Bash-скрипта, который принимает вводные данные.
Каждый пример будет строиться на предыдущем. К концу статьи у вас будет необходимые знания для создания полностью функционального конфигурационного скрипта на Bash для использования на новом или существующем хосте Ubuntu.
Предварительные требования
Вам не обязательно быть экспертом в написании сценариев оболочки Bash, чтобы следовать этому руководству, но убедитесь, что у вас есть следующие требования.
- A host running on Ubuntu. This tutorial uses Ubuntu 22.04 LTS.
- Привилегии root на хосте Ubuntu.
- A text editor, such as
vim
,nano
, or VSCode.
Установка имени хоста с использованием hostnamectl
Каждый хост должен иметь уникальное имя. Используя команду hostnamectl, вы можете запросить или изменить имя хоста. В этом случае синтаксис представлен ниже для изменения текущего имени хоста на желаемое.
Запуск команды hostnamectl с общим параметром set-hostname, за которым следует строковое значение в двойных кавычках в качестве нового имени хоста. Если бы вы выполняли эту команду вручную, она должна была бы работать без сбоев.
Но что если вы хотите включить это в сценарий, который принимает ввод пользователя? Начните с использования команды read, за которой следует параметр -p, который означает подсказку, и строку, указывающую пользователю, что вводить для этой подсказки. Затем сохраните ввод в новую переменную, называемую NEW_HOSTNAME.
Как только имя хоста сохранено в переменной NEW_HOSTNAME, вы можете передать переменную в команду hostnamectl, как показано в примере ниже.
И все! Комбинирование этих двух однострочников позволяет выполнять команды в сценарии! Но у вас есть еще одна задача: настройка сетевых параметров.
Настройка информации об IP-адресе с помощью netplan
Команда netplan является фактическим методом управления информацией об IP-адресе сетевого интерфейса для современных хостов Ubuntu. Инструмент netplan абстрагирует сетевые конфигурации от различных фонов, используя файлы конфигурации YAML.
Инструмент netplan считывает эти файлы конфигурации во время загрузки системы и применяет их к целевому сетевому интерфейсу (интерфейсам). Зачем это важно, вы можете спросить?
Имея вашу конфигурацию сети в формате YAML, вы можете начать сохранять или резервировать вашу конфигурацию в репозиторий Git. И поскольку Git обеспечивает возможности отслеживания изменений, вы можете использовать тот же файл конфигурации без необходимости создавать его заново для будущих развертываний с использованием конвейеров CI / CD. Вы знаете, DevOps!
Перед добавлением строк в файл конфигурации вы должны создать файл конфигурации с помощью команды touch.
Вышеприведенная команда поместит новый файл конфигурации в ваш домашний каталог. Затем вы выполните команду echo, чтобы echo то, что вы набираете, и внедрите это построчно в файл конфигурации с использованием перенаправления ввода для STDOUT > (добавление) и >> (добавление).
Примечание: Используйте двойные пробелы, а не табуляцию для отступов в YAML.
С каждой командой echo вы создаете конфигурацию YAML с правильными отступами, перенаправляя ввод с помощью STDOUT. В качестве альтернативы вы можете создать этот файл вручную с помощью текстового редактора. Но вам не нужно создавать файл вручную.
Вместо этого предложите пользователю ввести информацию о IP-адресе, которая вам нужна, с помощью той же команды read
.
Совет: один из способов получить информацию обо всех сетевых интерфейсах в Ubuntu – выполнить команду ip address.
Вот лучше. Теперь вы можете снова перенаправить пользовательский ввод в несколько переменных для использования в сценарии.
Есть еще множество других свойств, которые вы можете установить, о которых этот учебник не рассказывает подробно. Если вы хотите увидеть дополнительные распространенные свойства, обязательно прочтите страницы руководства по netplan.
Закончив настройку сети, пришло время создать единый сценарий!
Сборка всего в одном сценарии Bash
Теперь вы объедините все в один сценарий Bash с тем, что вы узнали из предыдущих разделов. Откройте ваш редактор по выбору, вставьте код ниже и сохраните файл как ~/host_deploy.sh
.
Чтобы выполнить скрипт, выполните нижеприведенную команду для вызова скрипта с помощью bash
в вашем терминале.
Скрипт попросит вас ввести новое имя хоста и информацию об IP-адресе и напомнит вам перезагрузить хост, чтобы изменения вступили в силу.
Теперь у вас есть рабочий скрипт в вашем пользовательском каталоге, который можно использовать для создания золотого образа для повторного использования или обмена с техниками и теми, кто регулярно выполняет эту задачу.
Заключение
Поздравляем! Вы добрались до конца статьи и создали полностью функциональный сценарий Bash, который вы можете использовать многократно.
Вы также можете попробовать использовать этот сценарий с Ansible и отвечать на вопросы, используя плейбук Ansible. Задачи в этом руководстве представляют собой лишь маленький образец начальных конфигурационных элементов, которые вы можете начать использовать в своих сценариях сборки и развертывания.
Теперь вы знаете, как принимать ввод пользователя, устанавливать основные системные параметры с помощью сценария Bash и применять эту технику для изменения имен хостов и IP-адресов в Ubuntu Linux.
Source:
https://adamtheautomator.com/change-linux-ip-hostname-bash-script/