もっと詳しく

Ubuntu コンピューターの IP アドレスとホスト名を管理するには、いくつかの方法があります。 システム管理者は、nmcli、netplan、hostname、および hostnamectl ツールを自由に使用できます。 これらのツールは単独でも優れた機能を発揮しますが、これらのツールをどのように組み込んで自動化ゲームを強化できますか?

構成を処理する Bash スクリプトを作成できます。 この記事では、入力を受け入れる Bash スクリプトを使用して、新しいホスト名を設定し、IP アドレス情報を構成する方法を学習します。

それぞれの例は、他のものの上に構築されます。 この記事の終わりまでに、新規または既存の Ubuntu ホストで使用するために、Bash で完全に機能する構成スクリプトを構築するために必要な知識を身に付けます。

前提条件

このチュートリアルに従うために Bash シェル スクリプトの専門家である必要はありませんが、次の要件を満たしていることを確認してください。

  • Ubuntu で実行されているホスト。 このチュートリアルでは、Ubuntu 22.04 LTS を使用します。
  • Ubuntu ホストへのルート権限。
  • などのテキストエディタ vimnano、 また VSコード.

hostnamectl によるホスト名の設定

すべてのホストには一意の名前が必要です。 を使用して hostnamectl コマンド ホスト名を照会または変更できます。 この場合、現在のホスト名を任意の名前に変更するための構文は以下のとおりです。

sudo hostnamectl set-hostname "new-hostname"

新しいホスト名として、set-hostname の共通パラメーターの後に二重引用符 (“”) で囲まれた文字列値を指定して、hostnamectl コマンドを実行します。 このコマンドを手動で実行していた場合、問題なく動作するはずです。

しかし、これをユーザー入力を受け入れるスクリプトに入れたい場合はどうでしょうか? を使用して開始します。 コマンドを読むの後にパラメータ -p が続きます。 促す、 このプロンプトに何を入力するかをユーザーに伝える文字列。 次に、入力を NEW_HOSTNAME という新しい変数に保存します。

read -p "Please type the desired hostname: " NEW_HOSTNAME

ホスト名が NEW_HOSTNAME 変数に格納されたら、次の例のように変数を hostnamectl コマンドに提供できます。

sudo hostnamectl set-hostname "$NEW_HOSTNAME"

以上です! これら 2 つのワンライナーを組み合わせることで、スクリプト内でコマンドを機能させることができます。 ただし、追加のタスクが 1 つあります。それは、ネットワーク オプションの構成です。

でIPアドレス情報を設定する netplan

netplan コマンド それは デファクト 最新の Ubuntu ホストのネットワーク インターフェイスの IP アドレス情報を管理する方法。 netplan ツールは、YAML 構成ファイルを使用して、さまざまなバックエンドからネットワーク構成を抽象化します。

netplan ツールは、システムの起動時にこれらの構成ファイルを読み取り、ターゲット ネットワーク インターフェイスに適用します。 なぜそれが重要なのですか?

ネットワーク構成を YAML にすると、構成の保存またはバックアップを開始できるようになります。 ギット リポジトリ。 また、Git は変更追跡機能を提供するため、CI / CD パイプラインを使用して将来の展開のために再作成する必要なく、同じ構成ファイルを使用できます。 ご存知、DevOps!

構成ファイルに行を追加する前に、次を使用して構成ファイルを作成する必要があります。 タッチコマンド.

sudo touch ~/99-custom.yaml

上記のコマンドは、新しい構成ファイルをホーム ディレクトリに配置します。 ここから、 エコーコマンドエコー STDOUT>(追加)および>>(追加)の入力リダイレクトを使用して、入力した内容を構成ファイルに1行ずつ挿入します。

注: YAML のインデントには、タブではなくダブル スペースを使用してください。

echo "network:" > ~/99-custom.yaml
echo "  ethernets:" >> ~/99-custom.yaml
echo "    enp0s31f6:" >> ~/99-custom.yaml
echo "      dhcp4: false" >> ~/99-custom.yaml
echo "      addresses:"
echo "       - [$IP_ADDRESS]" >> ~/99-custom.yaml
echo "      routes:"
echo "       - to: default"
echo "         via: $GATEWAY_ADDRESS" >> ~/99-custom.yaml
echo "      nameservers:" >> ~/99-custom.yaml
echo "        addresses: [$PRIMARY_DNS_ADDRESS, $SECONDARY_DNS_ADDRESS, 208.67.222.222, 208.67.220.220]" >> ~/99-custom.yaml
echo "  version: 2" >> ~/99-custom.yaml

それぞれの echo コマンドで、STDOUT を使用して入力をリダイレクトすることにより、適切なスペースを使用して YAML 構成を構築します。 または、テキスト エディタを使用してこのファイルを手動で作成することもできます。 ただし、ファイルを手動でビルドする必要はありません。

代わりに、同じコマンドを使用して必要な IP アドレス情報を入力するようユーザーに促します。 read 指図。

ヒント: Ubuntu のすべてのネットワーク インターフェイス情報を一覧表示する 1 つの方法は、ip address コマンドを実行することです。

read -p "Now type the IP address in CIDR notation, i.e. 192.168.1.1/24: " IP_ADDRESS
read -p "The gateway IP: " GATEWAY_ADDRESS
read -p "The primary DNS IP: " PRIMARY_DNS_ADDRESS
read -p "And finally, the secondary DNS IP: " SECONDARY_DNS_ADDRESS

その方がいいです。 スクリプトで使用するために、ユーザー入力をいくつかの変数に再度リダイレクトできるようになりました。

このチュートリアルでは詳しく説明していませんが、設定できるプロパティは他にもたくさんあります。 追加の共通プロパティを確認したい場合は、必ずお読みください ネットプランのマニュアルページ.

ネットワーク オプションが完成したら、1 つのスクリプトを作成します。

すべてを Bash スクリプトにまとめる

ここで、前のセクションで学んだことを使用して、すべてを 1 つの Bash スクリプトに結合します。 任意のエディターを開き、以下のコードを貼り付けて、ファイルに名前を付けて保存します。 ~/host_deploy.sh.

#! /usr/bin/env bash
# host_deploy.sh
# Description:
# For use with Ubuntu Server ovf template. Assumes Ubuntu Cloud image and default sudo account.
# This script is meant to run with sudo.
# Example:
# sudo bash ~/host_deploy.sh

# Gather input from user
read -p "Please type the desired hostname: " NEW_HOSTNAME
read -p "Now type the IP address in CIDR notation, i.e. 192.168.1.1/24: " IP_ADDRESS
read -p "The gateway IP: " GATEWAY_ADDRESS
read -p "The primary DNS IP: " PRIMARY_DNS_ADDRESS
read -p "And finally, the secondary DNS IP: " SECONDARY_DNS_ADDRESS

# Set a new hostname
sudo hostnamectl set-hostname "$NEW_HOSTNAME"

# Create a new netplan yaml config file
sudo touch ~/99-custom.yaml

# Apply network config to netplan yaml config file
# Making some assumptions here about the adapter name
echo "network:" > ~/99-custom.yaml
echo "  ethernets:" >> ~/99-custom.yaml
echo "    enp0s31f6:" >> ~/99-custom.yaml
echo "      dhcp4: false" >> ~/99-custom.yaml
echo "      addresses:"
echo "       - [$IP_ADDRESS]" >> ~/99-custom.yaml
echo "      routes:"
echo "       - to: default"
echo "         via: $GATEWAY_ADDRESS" >> ~/99-custom.yaml
echo "      nameservers:" >> ~/99-custom.yaml
echo "        addresses: [$PRIMARY_DNS_ADDRESS, $SECONDARY_DNS_ADDRESS, 208.67.222.222, 208.67.220.220]" >> ~/99-custom.yaml
echo "  version: 2" >> ~/99-custom.yaml

# Copy the custom config to the netplan folder and apply
sudo cp ~/99-custom.yaml /etc/netplan/99-custom.yaml

# Apply the new config
sudo netplan apply

# Reminder to restart to reset state
echo "Please restart to complete host deployment!!"

スクリプトを実行するには、以下のコマンドを実行してスクリプトを呼び出します。 bash あなたの端末で。

sudo bash ~/host_deploy.sh

スクリプトは、新しいホスト名と IP アドレスの情報を入力するように求め、変更を有効にするためにホストを再起動するように促します。

ユーザー ディレクトリにスクリプトが作成されたので、ゴールデン イメージを作成して再利用したり、技術者や日常的にこのタスクを実行する人々と共有したりできます。

結論

おめでとう! 記事の最後にたどり着き、繰り返し使用できる完全に機能する Bash スクリプトを作成しました。

このスクリプトを Ansible で使用して、Ansible play を使用して質問に回答することもできます。 このチュートリアルのタスクは、ビルド スクリプトとデプロイ スクリプトで使用を開始できる初期構成項目のごく一部のサンプルにすぎません。

これで、ユーザー入力を受け入れ、Bash スクリプトを使用して基本的なシステム パラメーターを設定し、Ubuntu Linux でホスト名と IP アドレスを変更する際にその手法を適用することがわかりました。

The post Bash 経由で Ubuntu の IP とホスト名を更新する方法 appeared first on Gamingsym Japan.