Amazon Linux インスタンスのホスト名の変更 - Amazon Elastic Compute Cloud

Amazon Linux インスタンスのホスト名の変更

プライベート VPC 内でインスタンスを起動すると、Amazon EC2 によってゲスト OS ホスト名が割り当てられます。Amazon EC2 によって割り当てられるホスト名のタイプは、サブネット設定によって異なります。EC2 ホスト名の詳細については、「Amazon EC2 インスタンスのホスト名タイプ」を参照してください。

IPv4 アドレスで IP ベースの命名を使用するように構成された EC2 インスタンスの典型的な Amazon EC2 のプライベート DNS 名は、ip-12-34-56-78.us-west-2.compute.internal のような形式になります。この名前は内部ドメイン、サービス (この例では、compute)、リージョン、そしてプライベート IPv4 アドレスで構成されます。インスタンスにログインしたとき、このホスト名の一部がシェルプロンプトで表示されます (ip-12-34-56-78 など)。Amazon EC2 インスタンスを停止し、再起動するたびに (Elastic IP アドレスを使用していない限り)、パブリック IPv4 アドレスが変わり、パブリック DNS 名、システムホスト名、シェルプロンプトも変わります。

重要

この情報は、Amazon Linux に適用されます。その他のディストリビューションの情報については、各ドキュメントを参照してください。

システムホスト名の変更

インスタンスの IP アドレスにパブリック DNS 名を登録している場合 (webserver.mydomain.com など)、インスタンスがそのドメインに含まれているものとして識別されるように、システムホスト名を設定できます。また、システムホスト名を変更すると、シェルプロンプトも変更され、AWS が提供するホスト名の代わりに、新しいシステムホスト名の最初の部分 (ip-12-34-56-78 など) が表示されます。パブリック DNS 名を登録していない場合でもホスト名は変更できますが、プロセスが少し違います。

ホスト名の更新内容を維持するには、preserve_hostname cloud-init 設定が true に設定されていることを確認してください。この設定を編集または追加するには、次のコマンドを実行します。

sudo vi /etc/cloud/cloud.cfg

preserve_hostname 設定が一覧表示されない場合は、ファイルの末尾に次のテキスト行を追加します。

preserve_hostname: true
システムホスト名をパブリック DNS 名に変更するには

パブリック DNS 名を登録している場合、この手順を行います。

    • Amazon Linux 2 の場合: hostnamectl コマンドを使用してホスト名を設定し、完全修飾ドメイン名 (webserver.mydomain.com) を反映させます。

      [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
    • Amazon Linux AMI の場合: インスタンスで、お好みのテキストエディタを使用して /etc/sysconfig/network 設定ファイルを開き、HOSTNAME エントリを変更して、完全修飾ドメイン名 (webserver.mydomain.com など) を反映させます。

      HOSTNAME=webserver.mydomain.com
  1. インスタンスを再起動し、新しいホスト名を取得します。

    [ec2-user ~]$ sudo reboot

    または、Amazon EC2 コンソールを使用して再起動することもできます ([Instances (インスタンス)] ページでインスタンスを選択し、[Instance state (インスタンスの状態)]、[Reboot instance (インスタンスの再起動)] の順に選択します)。

  2. インスタンスにログインして、ホスト名が更新されていることを確認します。メッセージには、新しいホスト名が表示されるはずです (最初の「.」まで)。hostname コマンドで完全修飾ドメイン名が表示されます。

    [ec2-user@webserver ~]$ hostname webserver.mydomain.com
パブリック DNS 名なしでシステムホスト名を変更するには
    • Amazon Linux 2 の場合: hostnamectl コマンドを使用してホスト名を設定し、必要なシステムホスト名 (webserver など) を反映させます。

      [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
    • Amazon Linux AMI の場合: インスタンスで、お好みのテキストエディタで /etc/sysconfig/network 設定ファイルを開き、HOSTNAME エントリを変更して、希望するシステムホスト名を反映させます (例: webserver)。

      HOSTNAME=webserver.localdomain
  1. お好みのテキストエディタで /etc/hosts ファイルを開き、下の例と一致する 127.0.0.1 で始まるエントリを変更します。ホスト名は自分のホスト名に置換します。

    127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
  2. インスタンスを再起動し、新しいホスト名を取得します。

    [ec2-user ~]$ sudo reboot

    または、Amazon EC2 コンソールを使用して再起動することもできます ([Instances (インスタンス)] ページでインスタンスを選択し、[Instance state (インスタンスの状態)]、[Reboot instance (インスタンスの再起動)] の順に選択します)。

  3. インスタンスにログインして、ホスト名が更新されていることを確認します。メッセージには、新しいホスト名が表示されるはずです (最初の「.」まで)。hostname コマンドで完全修飾ドメイン名が表示されます。

    [ec2-user@webserver ~]$ hostname webserver.localdomain

また、ユーザーデータを指定してインスタンスを設定するなど、よりプログラム的なソリューションを実装することもできます。インスタンスが Auto Scaling グループの一部である場合、ライフサイクルフックを使用してユーザーデータを定義できます。詳細については、「AWS CloudFormation ユーザーガイド」の「Run commands on your Linux instance at launch」(起動時に Linux インスタンスでコマンドを実行する) および「Lifecycle hook for instance launch」(インスタンス起動のライフサイクルフック) を参照してください。

ホスト名に影響を与えずにシェルプロンプトを変更する

インスタンスのホスト名を変更せずに、AWS が提供するプライベート名 (webserver など) よりも便利なシステム名 (ip-12-34-56-78 など) を表示させる場合、ホスト名の代わりにシステムニックネームを表示するようにシェルプロンプト設定ファイルを編集できます。

シェルプロンプトをホストニックネームに変更するには
  1. /etc/profile.d で、NICKNAME と呼ばれる環境変数を設定するファイルを作成して、シェルプロンプトに表示する値を設定します。例えば、システムニックネームを webserver に設定するには、次のコマンドを実行します。

    [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
  2. お好みのテキストエディタ (/etc/bashrc/etc/bash.bashrc など) で、vim (Red Hat) または nano (Debian/Ubuntu) ファイルを開きます。エディタのコマンドで sudo を使用する必要があります。/etc/bashrc および /etc/bash.bashrcroot が所有するためです。

  3. ファイルを編集し、ホスト名の代わりにニックネームを表示するようにシェルプロンプト変数 (PS1) を変更します。/etc/bashrc または /etc/bash.bashrc でシェルプロンプトを設定する次の行を見つけます (以下には、コンテキストを示すため前後の行も表示されています。[ "$PS1" で始まる行を探してください)。

    # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows

    その行の \h (hostname を表す記号) を NICKNAME 変数の値に変更します。

    # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows
  4. (オプション) シェルウィンドウのタイトルを新しいニックネームに設定するには、次の手順を完了します。

    1. /etc/sysconfig/bash-prompt-xterm という名前のファイルを作成します。

      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
    2. 次のコマンドを使用して、ファイルを実行可能にします。

      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
    3. お好みのテキストエディタ (/etc/sysconfig/bash-prompt-xtermvim など) で、nano ファイルを開きます。エディタのコマンドで sudo を使用する必要があります。/etc/sysconfig/bash-prompt-xtermroot が所有するためです。

    4. 次の行をファイルに追加します。

      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
  5. ログアウトしてから再度ログインし、新しいニックネーム値を取得します。

他の Linux ディストリビューションのホスト名の変更

このページの手順は、Amazon Linux のみで使用するためのものです。他の Linux ディストリビューションの詳細については、各ドキュメントおよび次の記事を参照してください。