EC2インスタンスに覚えやすいホスト名を設定できますか?

StackOverflow https://stackoverflow.com/questions/603351

  •  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;でホスト名を変更できます。   コマンドラインのホスト名の簡単な使用法は次のとおりです。

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
gt; hostname NEW_NAME
gt; hostname --fqd
gt; hostname
     

パラメータなしで、システムの現在のホスト名を出力します。

<*>      

システムの完全修飾ドメイン名(またはFQDN)を出力します。

<*>      

システムのホスト名を NEW_NAME に設定します。

/ etc / hostname を編集することもできます(少なくともUbuntuでは)。

AWSでの再起動後も確実に保持するには、 /etc/rc.local にコマンドを追加して、マシンの起動時に実行されるようにします。

setする方法もあります。 USER_DATAを介してホスト名を動的に

<*>

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

パブリックDNS名が既に登録されている場合は、この手順に従ってください

  1. お気に入りのテキストエディタで / etc / sysconfig / network 構成ファイルを開き、HOSTNAMEエントリを変更して、完全修飾ドメイン名(webserver.mydomain.comなど)を反映させます。

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

    [ec2-user ~]$ sudo reboot
    
  3. インスタンスにログインし、ホスト名が更新されたことを確認します。プロンプトに新しいホスト名(最初の&quot;。&quot;まで)が表示され、hostnameコマンドに完全修飾ドメイン名が表示されます。

    [ec2-user@webserver ~]$ hostname
    webserver.mydomain.com
    

パブリックDNS名なしでシステムのホスト名を変更するには

  1. お気に入りのテキストエディターで / etc / sysconfig / network 構成ファイルを開き、目的のシステムホスト名(webserverなど)を反映するようにHOSTNAMEエントリを変更します。

    HOSTNAME=webserver.localdomain
    
  2. お気に入りのテキストエディタで / 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
    
  3. インスタンスを再起動して、新しいホスト名を取得します。

    [ec2-user@webserver ~]$ hostname
    webserver.localdomain
    
  4. インスタンスにログインし、ホスト名が更新されたことを確認します。プロンプトに新しいホスト名(最初の&quot;。&quot;まで)が表示され、hostnameコマンドに完全修飾ドメイン名が表示されます。

    <*>

注:ホスト名に影響を与えずにシェルプロンプトを変更することもできます。 このAWSドキュメントを参照してください。

もちろん、独自のドメインがある場合は実行できます(Amazonホスト名を指すようにCNAMEをセットアップします)。それ以外の場合、あなたは彼らがあなたに与えるもの(またはそれらの1つを設定した場合はElastic IP)にほとんど固執しています。

/etc/rc.localソリューションは基本的なホスト名に対しては機能しましたが、FQDNは提供しません。

Linux AMI(他のインスタンスのスナップショット)では、上記の式はどれも機能しませんでした。次に、ファイル/host/init.d/modifyhostnameのHOSTNAMEフィールドを変更し、通常の再起動を行いました。

ホスト名を設定するには、複数のことを行う必要があります:

  1. hostname newname -ホスト名を設定しますが、揮発性です
  2. / etc / hostnameの編集-次回の再起動のためにホスト名を設定します
  3. / 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です

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top