職場では、Amazon EC2インスタンスでホストされているUbuntuサーバーを使用して小さなウェブサイトで作業しています。私たちには2つのWebサーバーがあり、いつでも1つは「ライブ」で1つは「テスト」ですが、「テスト」サーバーで新しい機能またはバグ修正が機能している場合は、 2つのボックスに割り当てられたIPアドレスを交換して、2つのサーバーによって処理されているドメインが交換されるようにするAWS API。
その結果、これらのサーバーの1つは常に「ライブ」サーバーまたは「テスト」サーバーのいずれかになりますが、これらは永続的な状態ではありません。
これらのサーバーのいずれかにSSHで接続するときの混乱を避けるために、特に愚かな人(私のような)がSSHセッションを長時間開いたままにしていて、サーバーがどのサーバーにあるのか混乱する場合は、2つのサーバーのホスト名を変更しますターミナルウィンドウのプロンプトとタイトルは、サーバーが現在稼働中かテスト中かによって、ubuntu@ourwebsiteLIVE
またはubuntu@ourwebsiteTESTING
を読み取ります。
IPスワップスクリプトでhostname ourwebsiteLIVE
などを実行することでこれを実行できることを知っており、すでにこれを実装しています。それは機能しますが、今度は私がいずれかのサーバーで何かをSudo
するたびに、印刷されます。
Sudo:ホストourwebsiteLIVEを解決できません
何も壊さないようですが、かなりイライラします。また、出力を相互にパイプするコマンドを連鎖させようとすると、将来的に問題が発生する可能性もあります。そのため、技術的には美的問題だけではないようです。
「ホスト名を解決できません」というメッセージに遭遇したすべての解決策は、/etc/hosts
または同様のファイルを変更することそしてサーバーを再起動することを含みます。これは多くのユースケースで問題ないことがわかりますが、ホスト名を定期的かつプログラム的に変更しているため、理想的とは言えません。スワップスクリプトを実行するたびに再起動を待つ必要はありません。
再起動せずにエラーメッセージを表示しない方法はありますか?
nss-myhostname を使用することをお勧めします。これは、常に現在のホスト名を解決するだけのnssプラグインであるため、/etc/hosts
を変更する必要はありません。
あなたが説明している問題は単なるリゾルバーの問題であるため、適切なDNS設定を行うことで修正できます。つまり、ourwebsiteLIVE.$DOMAIN
はマシンのIPに解決されるだけです。
私はこの質問を完全に復活させていることを知っていますが、現在(少なくともUbuntu Server 16.04では)次のようにして、再起動せずにホスト名を更新できます。
最初に/ etc/hostsと/ etc/hostnameを新しいホスト名で編集します
コマンドを実行する
systemctl restart systemd-logind.service
hostnamectl --static --transient --pretty set-hostname YOURHOSTNAME
新しいホスト名は再起動なしでアクティブになり、もちろん再起動後も保持されます。
迅速な回避策はhostname ourwebsiteLIVE
AND編集/etc/hosts
再起動せずにエラーが消えるはずです。