入社
入社とは手続きの塊である。
多くの人間が働くとはこういうものなのかと思い知らされる。
とにかくアカウントの管理が面倒くさい。
総務系のアカウント、人事系のアカウント、経理系のアカウント、事業部のアカウント、課のアカウント、プロジェクトのアカウント、建物のアカウント、運用のアカウント、PCのアカウント、etc...
連携するものもあれば、初回だけ連携するもの、多くの組織を跨ぐ手続きの要るもの、なんかよくわかんないもの、明らかに要らないもの。
その中でも厄介なのが、ラボアカウントだ。試験環境にハイパーバイザがあって、その上で多数のOSが走る仮想マシンが乗っている。その台数は多く、認証サーバも自動構成もされていない。多いと言ってもせいぜい20台程度、なあにそのくらいは気合でなんとかなる。と言う話なのだろうが、はっきり言ってクソだと思った。
基本的にはユーザを作ってパスワードを入れて公開鍵を配置してパーミッションを変更しwheelに加えるだけ。こんなの数分で終わる作業だが、元無職の自分にはとても耐えられそうに無かった。というか、バイトに管理者アカウントを教えるってどうなんだよとも思った。
元無職はいきなり会社のやり方に耐えられずに上司に相談した。あっさりとOKを貰えたのでスクリプトを作ることにした。だが元無職のksharaはプログラムが書けない。これは大きな問題かと思われたが、私が世間と隔離されている間に以外にも世の中は良くなっていたらしくGoogleで検索しながら作業するだけで作ることができた。とは言え、どう考えても普通に全部手打ちしたほうが圧倒的に速いのは事実である。今後、私以外の新人が入ればこの作業は意味のあるものになるのだろうから上司も特にその点については気にしていなかった模様。
それと、色々と良いのか?と思ったことを言ったら「じゃあルール作ってやるからなんとかしとけ」と言われた。例えばリモートのログインはpub-key auth に限定、 permit root login が no みたいなやつだ。
この作業で詰まった点をいくつか以下にまとめる。ちなみに情報はバイト先にあり、全て記憶を頼りに書いているので、細かな間違いはあるかもしれない。
まず、ハイパーバイザで作業するのはウンコの垂れ流しなのでターミナルエミュレータで作業する。TeraTermを普通に使わせてもらえた。とりあえず1台繋がる経路を確保してから、 ssh root@ip-addr みたいな接続をする。あまりにも酷い話だがまあよい。ssh コマンドはコマンドを流し込めるらしい。
# ssh root@ip-addr "hostname"
のように叩けば、どのIPアドレスがどんな名前のサーバなのかがすぐに分かる。
シャル変数という便利なものがあるので
# ssh root@${hostaddress} "hostname"
のようにまとめてコマンドを流し込める。
IPアドレスはテキストファイルにまとめて cat と for でうまい感じにやったけど、細かい記述は忘れてしまった。
複数のコマンドも
# ssh root@${hostaddress} "hostname; whoami"
のように流し込める
そしてここで問題が発生する
# ssh root@${hostaddress} "hostname; sudo ls /sbin"
のようなコマンドを流し込みインタラクティブな応答が発生すると詰まるのだ。
こういうときには -t オプションを付けると良いらしい。tty をうまい感じに繋いでくれるらしいが、詳細はよく分からない。
# ssh -t root@${hostaddress} "hostname; sudo ls /sbin"
みたいな感じだ。
ちなみに使うコマンドはたくさんあるので、面倒だから.shにまとめて対象に配ってしまう。
# scp deploy.sh oot@${hostaddress}:/home/kshara/
のようにして配った。
配った.sh の中に
sudo passwd kshara
みたいな行があるときが厄介だ。
sshを使ってるシェルの先に、別なシェルがあって、そいつがsudo を実行し その先で passwd が走ってる。こういうのは -t ではどうにかならないらしい。これの解決法は非常に冗談みたいな方法で -t オプションはつければ付けただけ深く作用してくれるらしい。
つまり
# ssh -t -t -t root@${hostaddress} "bash /home/kshara/deploy.sh"
とか書くと上手く動いてくれるのだ。
あとは細かい引数の設定もあるが、その多くはシェル変数で対応できた。
この作業の恩恵がいつ現れるかは不明。新人が入ったら有効に機能するのかもしれないが、勤勉な新人だったら何も文句を言わずにそれぞれのサーバに入ってアカウントを作るのだろう。自分のような怠け者の新人を歓迎する。