ssh+yumでリモート先にインストール
僕は、自作rpmパッケージをyumで管理 - yokkunsの日記で書いたように、自作のパッケージをyumで管理しているのですが、サーバが複数あると、rpmパッケージをscpで転送して、各サーバにログインしてそれをインストールしたりと結構面倒です。
そこで、ssh+yumでリモート先にパッケージをインストールすることにしました。
単純に
としたいところですが、通常 sudoコマンドを実行できるのはログインしているユーザーのみとなっているので、これは無理です。(参考: http://kbase.redhat.com/faq/docs/DOC-16667)
sshコマンドには、-tオプションを使って強制的に pseudo-tty を割り当てることが出来るので、これを使います。
通常のインストールはこれで良いのですが、僕は自作のパッケージをインストールしたいので、以下のような簡単なスクリプトを書きました。
#!/bin/sh PATH=/bin SCP=/usr/bin/scp SSH=/usr/bin/ssh YUM=/usr/bin/yum SUDO=/usr/bin/sudo if [ -f $2 ]; then ${SCP} $2 $1:/var/tmp/ | exit 1 ${SSH} -t $1 ${SUDO} ${YUM} install /var/tmp/`basename $2` else ${SSH} -t $1 ${SUDO} ${YUM} install $2 fi
第2引数がファイルの場合はscpで転送してそれをインストール、そうじゃない時は通常のインストールを行っています。
これで、複数台のサーバにインストールする時に楽出来そうです。