NFSまたはSMB /etc/fstab
を使用)によっていくつかのLinuxファイルサーバーをマウントするLinuxサーバーがたくさんあります。
ただし、各サーバーの/etc/fstab
を手動で変更するのは非常に面倒です。
複数のLinuxサーバーの/etc/fstab
を同時に編集する方法はありますか?
長期的には、これは構成管理ツール(puppet
、chef
、ansible
など)が対象とする種類のタスクです。
短期的な解決策として、func
やfabric
のようなものを使用してfstab
ファイルをプッシュします。 fabric
の使用例を実行します。これは、私が最もよく知っているものだからです。
インストールはディストリビューションによって異なります。これらの1つが機能する可能性があります:
$ Sudo pip install fabric
$ Sudo easy_install fabric
$ Sudo apt-get install fabric
次に、sshキーも配布する必要があります。簡単だ:
$ ssh-keygen
$ ssh-copy-id Host2
$ ssh-copy-id Host3
次に、fab
ファイル(ほとんどPython
スクリプト)を作成する必要があります。例えば、 copy_fstab.fab
は次のようになります:
from fabric.operations import put
from fabric.operations import Sudo
def copy_fstab():
# Copy local fstab over
put('/etc/fstab', '/etc/fstab', use_Sudo=True)
# Run mount -a
Sudo('mount -a')
最後に、fabファイルを実行します。
$ fab -H Host2,Host3 copy_fstab
お役に立てれば!
Automaticit、salt、puppet、ansibleなどの一括展開ツールを使用して、スクリプト(puppetではexecを使用)または以下のようなcronジョブを実行して、mountを使用して一括展開されたfstabを実行できます。
mount -a --fstab pathtofile
そして私の古い答え(マウントが古すぎて--fstab/-Tを使用できない場合):このような大量展開ツールでは、/ etc/fstab.dの動作をエミュレートするためにひどいハッカーを行うことができます(/ etc/fstab以降) .dはまだサポートされておらず、これらのディレクトリはデプロイメントツールを非常に便利にします)。
Fstabを/etc/fstab.d/01mainに移動します
Fstab行をファイル/etc/fstab.d/02nfsstuffにデプロイします
それらをマージします(ここでは番号の順序が重要です):
cat /etc/fstab.d/* > /etc/fstab
/etc/cron.d/nfsstuffで恐ろしいハックジョブcronジョブを作成します
0 * * * * root cat /etc/fstab.d/* > /etc/fstab ; mount -a
適切な解決策を見つけていただければ幸いですが、それまでは、これが役立つかもしれません。
私は、展開ツールを使用することが最も適切なソリューションであるというPeterに同意します。ただし、cronからのマウントが良いアイデアであることに同意しません。
デプロイメントツールが飛躍的に進歩しすぎている場合は、後期のinit/systemdスクリプト(中央リポジトリから定義をフェッチする可能性があります)を使用して、ファイルシステムをマウントします。
公開鍵認証を使用してSSH経由で利用可能な各サーバーに管理者アカウントがあると仮定すると、bashループで、このSSHアカウントを使用してsedまたはその他のテキスト編集ツールをリモートで実行するだけです。