EC2 でいくつかの標準的な Fedora インスタンスを実行しています。Amazon によって割り当てられたインスタンスのパブリック ホスト名は奇妙で覚えにくいと感じています。それらを短いもの(赤/青/緑/など)に変更したいと思います。
これを行うことに何か欠点はありますか?また、再起動後も持続するように設定するにはどうすればよいですか?
ありがとう。
EC2 でいくつかの標準的な Fedora インスタンスを実行しています。Amazon によって割り当てられたインスタンスのパブリック ホスト名は奇妙で覚えにくいと感じています。それらを短いもの(赤/青/緑/など)に変更したいと思います。
これを行うことに何か欠点はありますか?また、再起動後も持続するように設定するにはどうすればよいですか?
ありがとう。
始める前に、実行hostname
してみてhostname --fqdn
、応答が何であるかを書き留めてください。
/etc/hostname
再起動後も保持されるホスト名を編集および設定できます。hostname -F /etc/hostname
を使用してその値をホスト名に読み込むことにより、ホスト名を強制的に「リロード」することができます。ログアウトしてログインすると、bash プロンプトが変わります。
警告/注:
はい、bashプロンプトのホスト名をより便利なものに設定するのはいいことですがip-123-123-123-123
、多くのことが実際に標準的な方法で設定された ec2 インスタンスのホスト名。ホスト名を編集/etc/hostname
して多くのサービスに変更した後webserver
、ホスト名が解決されず、Apache が起動しないため、失敗するようです。次に編集/etc/hosts
して追加しました
127.0.0.1 webserver
2行目として。その後、Apache が起動しますが、FQDN が見つからないと不平を言いました。hostname --fqdn
動作しなくなったことを確認しました。
次に相談したところman hostname
、 を設定することはできますが、DNS ルックアップを介して が返されてhostname
いるように見えることがわかりました。FQDN
FQDN
このコマンドでは、FQDN (hostname --fqdn によって返される) または DNS ドメイン名 (dnsdomainname によって返される) を変更することはできません。システムの FQDN は、resolver(3) がホスト名に対して返す名前です。
技術的には: FQDN は、gethostname(2) によって返されるホスト名に対して getaddrinfo(3) が返す名前です。DNS ドメイン名は、最初のドットの後の部分です。
したがって、どのように変更できるかは、構成 (通常は /etc/host.conf 内) によって異なります。通常 (DNS または NIS の前にホスト ファイルが解析される場合)、/etc/hosts で変更できます。
システムを設定したり、システムをだまして FQDN を返すようにすることは可能かもしれないと思います。たとえば、ip-123-123-123-123.ec2.internal
ホスト名はそうですwebserver
が、この時点で、それは価値があるよりも多くの問題のように見え始めました。 bashプロンプトは、将来的に多くのソフトウェアと構成の問題を引き起こす可能性があるため、あきらめることにしました.
また、多くの amazon ec2 インスタンスがcloud-initと呼ばれるものを使用していることも知りました。
cloud-init は、クラウド インスタンスの早期初期化を処理する Ubuntu パッケージです。これは、Ubuntu クラウド イメージにインストールされ、EC2 で利用可能な公式の Ubuntu イメージにもインストールされます。
それが構成するもののいくつかは次のとおりです。
- デフォルトのロケールの設定
- ホスト名の設定
- ssh 秘密鍵を生成する
- ユーザーがログインできるように、ssh キーをユーザーの .ssh/authorized_keys に追加する
- エフェメラル マウント ポイントの設定
cloud-init の動作は、ユーザー データを介して構成できます。ユーザーデータは、インスタンスの起動時にユーザーが与えることができます。これは、ec2-run-instances への --user-data または --user-data-file 引数を介して行われます。
ホスト名がcloud-initでどのように構成されているかについて説明しているこれも見つけました:
EBS インスタンスでは、シャットダウンしてから起動すると、別の IP アドレスで終了していました。
ユーザーが /etc/hostname を元の値 (メタデータの「local-hostname」によってシード) から変更していない場合、cloud-init は再びホスト名を設定し、/etc/hostname を更新します。
ユーザーが /etc/hostname を変更した場合、それはユーザー管理のままになります。
さらに、/etc/cloud/cloud.cfg に True 値に設定された「preserve_hostname」値が含まれている場合、/etc/hostname は変更されません。
興味深い点は、ホスト名を変更しなくても、cloud-init パッケージによってホスト名が最新の状態に保たれることです。
他の誰かが回避策を持っているか、言及された問題のいくつかに対処し、ホスト名を変更したために ec2 インスタンスで何も壊れないことを安心させるのに役立つなら、私はそれを聞いてうれしいです.
もう 1 つの方法は、単純に編集してマシンのニックネームを~/.bashrc
先頭に追加することです。PS1
編集: おそらくより正確には、マシン全体、たとえば AWS Linux AMI (例) で (これをコンソールに貼り付けるか、任意のインストール .sh に追加します):
cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF
Edit /etc/sysconfig/network
as root.
Replace
HOSTNAME=localhost.localdomain
with
HOSTNAME=hostname.DOMAIN_NAME
Then, either reboot or run /etc/init.d/network restart
The server then should report its name as a FQDN.
このサイトから:
実行中のシステムでホスト名を変更する
どの Linux システムでも、コマンドを使用してそのホスト名を変更できます
hostname
(驚いたことに?)... 以下に、コマンド ライン ホスト名の簡単な使用法をいくつか示します。$> hostname
パラメータを指定しないと、システムの現在のホスト名が出力されます。
$> hostname --fqd
システムの完全修飾ドメイン名 (または FQDN) が出力されます。
$> hostname NEW_NAME
は、システムのホスト名を に設定し
NEW_NAME
ます。
編集することもできます/etc/hostname
(少なくとも Ubuntu では)。
AWS での再起動後も確実に保持するには、コマンドを追加して/etc/rc.local
、マシンの起動時に実行されるようにします。
USER_DATA を介して動的にホスト名を設定する方法もあります:
USER_DATA=`/usr/bin/curl -s http://169.254.169.254/latest/user-data` HOSTNAME=`echo $USER_DATA` IPV4=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4` hostname $HOSTNAME echo $HOSTNAME > /etc/hostname
システムのホスト名をパブリック DNS 名に変更するには
任意のテキスト エディターで構成ファイルを開き、/etc/sysconfig/network
HOSTNAME エントリを変更して、完全修飾ドメイン名 (webserver.mydomain.com など) を反映させます。
HOSTNAME=webserver.mydomain.com
インスタンスを再起動して、新しいホスト名を取得します。
[ec2-user ~]$ sudo reboot
インスタンスにログインし、ホスト名が更新されていることを確認します。プロンプトには新しいホスト名 (最初の「.」まで) が表示され、hostname コマンドには完全修飾ドメイン名が表示されます。
[ec2-user@webserver ~]$ hostname
webserver.mydomain.com
/etc/sysconfig/network
好みのテキスト エディターで構成ファイルを開き、HOSTNAME エントリを変更して、目的のシステム ホスト名 (webserver など) を反映させます。
HOSTNAME=webserver.localdomain
/etc/hosts
お気に入りのテキスト エディターでファイルを開き、127.0.1.1 (DHCP システムの場合) または eth0 のアドレス (静的 IP システムの場合) で始まるエントリを追加して、以下の例と一致させ、独自のホスト名に置き換えます。(127.0.0.1 は localhost 行として残す必要があります。)
127.0.0.1 localhost localhost.localdomain
127.0.1.1 webserver.example.com webserver
インスタンスを再起動して、新しいホスト名を取得します。
[ec2-user ~]$ sudo reboot
インスタンスにログインし、ホスト名が更新されていることを確認します。プロンプトには新しいホスト名 (最初の「.」まで) が表示され、hostname コマンドには完全修飾ドメイン名が表示されます。
[ec2-user@webserver ~]$ hostname
webserver.localdomain
注: ホスト名に影響を与えずにシェル プロンプトを変更することもできます。この AWS ドキュメントを参照してください。
もちろん、独自のドメインがある場合はそれを行うことができます(Amazonホスト名を指すようにCNAMEを設定します)。そうでなければ、あなたは彼らがあなたに与えるもの(またはあなたがそれらの1つを設定した場合はElasticIP)でかなり立ち往生しています。
私の Linux AMI (他のインスタンスのスナップショット) では、上記の式はどれも機能しませんでした。次に、ファイルの HOSTNAME フィールドを変更しただけです: /etc/init.d/modifyhostname で、通常の再起動を行いました。
/etc/rc.local ソリューションは、基本的なホスト名に対しては機能しましたが、FQDN は提供しません。
sudo hostname *yourdesiredhostnamehere*
sudo /etc/init.d/networking restart
次に、ホスト名が変更されます。私のサーバーでは、apache や postfix などの他のすべてのサービスが動作します。サーバーはUbuntu 12.04 LTSです