web-dev-qa-db-ja.com

複数のLinuxサーバーの/ etc / fstabを同時に変更するにはどうすればよいですか

NFSまたはSMB /etc/fstabを使用)によっていくつかのLinuxファイルサーバーをマウントするLinuxサーバーがたくさんあります。

ただし、各サーバーの/etc/fstabを手動で変更するのは非常に面倒です。

複数のLinuxサーバーの/etc/fstabを同時に編集する方法はありますか?

2
Bossliaw

長期的には、これは構成管理ツール(puppetchefansibleなど)が対象とする種類のタスクです。

短期的な解決策として、funcfabricのようなものを使用して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

お役に立てれば!

6

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

適切な解決策を見つけていただければ幸いですが、それまでは、これが役立つかもしれません。

1
Peter

私は、展開ツールを使用することが最も適切なソリューションであるというPeterに同意します。ただし、cronからのマウントが良いアイデアであることに同意しません。

デプロイメントツールが飛躍的に進歩しすぎている場合は、後期のinit/systemdスクリプト(中央リポジトリから定義をフェッチする可能性があります)を使用して、ファイルシステムをマウントします。

1
symcbean

公開鍵認証を使用してSSH経由で利用可能な各サーバーに管理者アカウントがあると仮定すると、bashループで、このSSHアカウントを使用してsedまたはその他のテキスト編集ツールをリモートで実行するだけです。

1
tonioc