著名な方は言いました。「ホスト名を付けたら負け。SSHしたら負け。」(だったと思う・・)
てことで。今回はホスト名に関することを書きます。
みなさん、ホスト名付けてますかーーーー?!
そう。ホスト名。昔は愛着を込めてよくサーバに名前を付けましたよね。
1台を長く使い続けていたので、ホスト名を付けてました。
時は、クラウド時代。サーバを長く使い続ける事も出来るし、使い捨てる事も出来る。
そんな時代とホスト名はどのように関係があるのか。そんな物語の始まりです。
そもそも、ホスト名はなぜ付けているのでしょう?教えて偉い人。
僕が考えつく理由としては、以下などかな。
- サーバを識別するため
- ADなどの制限でユニークにする必要があるため
- ライセンスの関係でホスト名を固定にする必要があるため
そのホスト名の設定方法は色々あります。
- SSHして手動でつける
# hostname hogehoge # vi etc/sysconfig/network NETWORKING=yes HOSTNAME=hogehoge GATEWAY=10.10.10.1
- Chef / Ansibleでつける
cookbook playbook
- cloud init / user dataでつける
#cloud-config hostname: hogehoge
そして、同じロールで複数構成の場合は、
hogehoge02とか、hogehoge03とかを上記の処理の際にインクリメントするとかしますね。
今のサーバの台数を調べて、最後の数値からインクリメント?
AutoScaleするときは、ホスト名にautoとか入れて1番からインクリメント?
何か少し複雑になってきましたね。
「そのホスト名、本当に必要なの?」
つか、ホスト名って改めて何に使ってるんですかね。
AWSでは、ip-xx-xx-xx-xxというIPアドレスをベースにしたホスト名が自動で割り当てられます。
これでユニーク性は保てます。
サーバの識別は出来ないですが、そもそもSSHしなかったら識別すら必要ないんじゃない?
infrastructure as codeとか推進すると、SSHで手作業することもほぼ無いでしょう。
さらに、今後はコンテナやLambdaが台頭してくると、なおさらSSH不要や、
使い捨て(もはやそう言わないかも)が進みます。
発想の転換が必要ですが、使い捨てベースに考えると色々と考え方や使い方が変わります。
NoSSHについてはまた説明しますが、
AWSのホスト名自動付与にまかせて、ホスト名を明示的に付けなければ
上記のような手順やコードが全くもって不要になります。
全くもって不要になります。
前回のIPアドレスの件もそうですが、一つづつ色々なものを引き剥がし、
考え直していくことで、不要な作業の撲滅と共に、シンプルな構成のクラウドネイティブに一歩ずつ近づいていきます。
そして、来たるクラウドネイティブやコンテナ、Lambdaの思想に備えていきましょう。
以上、