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」コマンドを実行し、新しいホスト名をダブルクォート(””)で囲まれた文字列値として指定することで、一般的なパラメータを使用してコマンドを実行することができます。手動でこのコマンドを実行する場合、問題なく動作するはずです。
しかし、ユーザー入力を受け付けるスクリプトに組み込む場合はどうでしょうか?まず、readコマンドを使用して、-pパラメータ(promptを意味する)と、このプロンプトに対してユーザーに入力する内容を示す文字列を指定します。そして、入力をNEW_HOSTNAMEという新しい変数に保存します。
ホスト名がNEW_HOSTNAME変数に保存されたら、以下の例のように変数をhostnamectlコマンドに指定することができます。
以上です!これらの2つのワンライナーを組み合わせることで、スクリプト内でコマンドを実行することができます!ただし、追加のタスクがあります:ネットワークオプションの設定です。
netplan
を使用してIPアドレス情報を設定する
netplanコマンドは、モダンなUbuntuホストのネットワークインターフェースのIPアドレス情報を管理するためのデファクトスタンダードの方法です。netplanツールは、YAML形式の設定ファイルを使用して、さまざまなバックエンドからネットワークの設定を抽象化します。
netplanツールは、システムの起動時にこれらの設定ファイルを読み込み、対象のネットワークインターフェースに適用します。なぜこの点が重要かというと、おそらく次のような理由があるからです。
ネットワーク構成をYAML形式で持つことで、Gitリポジトリに構成を保存またはバックアップを開始することができます。Gitは変更の追跡機能を提供するため、同じ構成ファイルを再作成する必要なく、将来のデプロイメントに対してCI / CDパイプラインを使用できます。DevOpsのことですね!
構成ファイルに行を追加する前に、touchコマンドを使用して構成ファイルを作成する必要があります。
上記のコマンドは新しい構成ファイルをホームディレクトリに配置します。ここから、echoコマンドを実行して、入力のリダイレクションを使用して構成ファイルに1行ずつ入力を注入します。 STDOUTの>(追加)と>>(追記)を使用します。
注意:YAMLではインデントにタブではなく、ダブルスペースを使用します。
各echoコマンドで、STDOUTを使用して入力をリダイレクトすることで、適切なスペーシングを使用してYAML構成を構築します。代替として、テキストエディタを使用してこのファイルを手動で構築することもできます。ただし、手動でファイルを構築する必要はありません。
その代わりに、同じread
コマンドを使用して、必要なIPアドレス情報の入力をユーザーにプロンプトします。
ヒント:Ubuntuでネットワークインターフェイス情報をすべてリストする方法の1つは、ip addressコマンドを実行することです。
このチュートリアルでは詳しく説明されていない他の多くのプロパティがあります。追加の一般的なプロパティを見たい場合は、netplanマニュアルページを読んでください。
ネットワークオプションが完了したら、単一のスクリプトを作成する時が来ました!
すべてをBashスクリプトに組み込む
今、前のセクションから学んだことを活かして、すべてを単一のBashスクリプトに組み合わせます。お好みのエディタを開き、以下のコードを貼り付け、ファイルを~/host_deploy.sh
として保存します。
スクリプトを実行するには、以下のコマンドをターミナルで bash
で呼び出します。
スクリプトは新しいホスト名とIPアドレス情報の入力を求め、変更が反映されるようにホストを再起動するようにリマインダーを表示します。
ユーザーディレクトリに動作するスクリプトがあるので、これを再利用したり、このタスクを定期的に実行する技術者やその他の人々と共有したりするために、ゴールデンイメージを作成できます。
結論
おめでとうございます!記事の最後まで到達し、繰り返し使用できる完全な Bash スクリプトを構築しました。
このスクリプトを Ansible と共に使用し、Ansible プレイを使って質問に答えることもできます。このチュートリアルのタスクは、ビルドとデプロイメントのスクリプトで使用できる初期設定アイテムのごく一部にすぎません。
今ではユーザーの入力を受け入れ、Bash スクリプトを使用して基本的なシステムパラメーターを設定し、Ubuntu Linux でホスト名と IP アドレスを変更する技術を適用する方法を知っています。
Source:
https://adamtheautomator.com/change-linux-ip-hostname-bash-script/