EC2インスタンスに覚えやすいホスト名を設定できますか?
-
03-07-2019 - |
質問
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
を参照し、 hostname
を設定できる一方で、 FQDN
はDNS経由で返されるものであるように見えることを学びました見上げる。
FQDN
このコマンドでは、FQDN(hostname --fqdnによって返される)またはDNSドメイン名(dnsdomainnameによって返される)を変更できません。システムのFQDNは、ホスト名に対してresolver(3)が返す名前です。
技術的に:FQDNは、gethostname(2)によって返されるホスト名に対してgetaddrinfo(3)が返す名前です。 DNSドメイン名は、最初のドットの後の部分です。
したがって、設定(通常は/etc/host.conf内)に応じて変更方法が異なります。通常(hostsファイルがDNSまたはNISの前に解析される場合)/ etc / hostsで変更できます。
ホスト名が<の場合でも、 ip-123-123-123-123.ec2.internal
のようなFQDNを返すようにシステムを設定したり、システムをだますことは可能だと思いますcode> webserver しかし、この時点でそれは価値があるよりも多くのトラブルのように見え始めました、そして私にとってより良いbashプロンプトを持つことは多くのソフトウェアと設定の問題を将来的に引き起こすかもしれないので、私は与えることに決めました
また、多くのAmazon ec2インスタンスが cloud-init と呼ばれるものを使用していることも知りました:
cloud-initは、クラウドインスタンスの初期初期化を処理するUbuntuパッケージです。 Ubuntu Cloud Images、および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を更新します。
ユーザーが持っている場合
他のヒント
別の方法は、単に〜/ .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
/ etc / sysconfig / network
をルートとして編集します。
交換
HOSTNAME=localhost.localdomain
with
HOSTNAME=hostname.DOMAIN_NAME
その後、再起動するか、 /etc/init.d/network restart
を実行します
サーバーは、その名前をFQDNとして報告する必要があります。
実行中のシステムでホスト名を変更する
Linuxシステムでは、コマンド
hostname
(驚いた?)&#8230;でホスト名を変更できます。 コマンドラインのホスト名の簡単な使用法は次のとおりです。
gt; hostname
gt; hostname --fqd
gt; hostname NEW_NAMEUSER_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
パラメータなしで、システムの現在のホスト名を出力します。
<*>システムの完全修飾ドメイン名(またはFQDN)を出力します。
<*>システムのホスト名を
NEW_NAME
に設定します。
/ etc / hostname
を編集することもできます(少なくともUbuntuでは)。
AWSでの再起動後も確実に保持するには、 /etc/rc.local
にコマンドを追加して、マシンの起動時に実行されるようにします。
setする方法もあります。 USER_DATAを介してホスト名を動的に:
<*>
システムのホスト名をパブリックDNS名に変更するには
パブリックDNS名が既に登録されている場合は、この手順に従ってください
-
お気に入りのテキストエディタで
/ etc / sysconfig / network
構成ファイルを開き、HOSTNAMEエントリを変更して、完全修飾ドメイン名(webserver.mydomain.comなど)を反映させます。HOSTNAME=webserver.mydomain.com
-
インスタンスを再起動して、新しいホスト名を取得します。
[ec2-user ~]$ sudo reboot
-
インスタンスにログインし、ホスト名が更新されたことを確認します。プロンプトに新しいホスト名(最初の&quot;。&quot;まで)が表示され、hostnameコマンドに完全修飾ドメイン名が表示されます。
[ec2-user@webserver ~]$ hostname webserver.mydomain.com
パブリックDNS名なしでシステムのホスト名を変更するには
-
お気に入りのテキストエディターで
/ etc / sysconfig / network
構成ファイルを開き、目的のシステムホスト名(webserverなど)を反映するようにHOSTNAMEエントリを変更します。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@webserver ~]$ hostname webserver.localdomain
-
インスタンスにログインし、ホスト名が更新されたことを確認します。プロンプトに新しいホスト名(最初の&quot;。&quot;まで)が表示され、hostnameコマンドに完全修飾ドメイン名が表示されます。
<*>
注:ホスト名に影響を与えずにシェルプロンプトを変更することもできます。 このAWSドキュメントを参照してください。
もちろん、独自のドメインがある場合は実行できます(Amazonホスト名を指すようにCNAMEをセットアップします)。それ以外の場合、あなたは彼らがあなたに与えるもの(またはそれらの1つを設定した場合はElastic IP)にほとんど固執しています。
/etc/rc.localソリューションは基本的なホスト名に対しては機能しましたが、FQDNは提供しません。
Linux AMI(他のインスタンスのスナップショット)では、上記の式はどれも機能しませんでした。次に、ファイル/host/init.d/modifyhostnameのHOSTNAMEフィールドを変更し、通常の再起動を行いました。
ホスト名を設定するには、複数のことを行う必要があります:
-
hostname newname
-ホスト名を設定しますが、揮発性です - / etc / hostnameの編集-次回の再起動のためにホスト名を設定します
- / etc / hostsを編集-sudoが文句を言わないようにします
これらをスクリプトにまとめ、要点としてアップロードしました。 https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85
DNSプロバイダーをいじりたくない場合は、インスタンスにエイリアスを使用できます。 Amazonが AWS Management Console 、ただし、当面は、必要に応じて無料の RightScale サービスを使用できますエイリアス機能-これらのAmazonインスタンスIDを覚えるよりもはるかに簡単です。
sudo hostname *yourdesiredhostnamehere*
sudo /etc/init.d/networking restart
その後、ホスト名が変更されます。私のサーバーでは、ApacheやPostfixなどの他のすべてのサービスが動作します。サーバーはUbuntu 12.04 LTSです