新しいコンピュータまたは仮想マシンにプログラムセットを再インストールする

新しいコンピュータまたは仮想マシンにプログラムセットを再インストールする

オペレーティングシステム:OpenSuSE 42.3 64ビット

メールサーバーの設定に長い時間を費やしており、ホストを再インストールする必要がある場合は、簡単に再配布できるように何らかの方法で接続したいと思いました。

たとえば、ウイルスによってデータが消去されたり、ハードウェア障害が発生したりします。

dovecot、clamav、dkim、dovecot、rspam、spam Assassin、opensslなどでpostfixを設定しました。

時間の経過とともに継続的に調整していきたいと思います。

これには、ファイルシステムの権限、ユーザーの追加、キーの生成などの複雑な変更が必要です。

lxc、dockerなどのコンテナを考えました。これが最善の選択ですか?どれ?

新しいコンピュータにまったく同じ設定を簡単に再インストールできるように、これらの設定をすべて収集するにはどうすればよいですか。現在、コンピュータはまだクリーンアップされていない古いファイルやアイテムでいっぱいに膨らんでいます。新しいVMを起動し、現在のコンテンツをすべて移行し、古いVMを削除したいと思います。

コンテナが答えであれば、どのような変更を収集してコンテナに入れることができますか?

含めると、設定をより簡単に複製できるようです。

答え1

たとえば、ある種の構成管理が必要なようです。塩の山 (可能所有者なしまたはアンシプールまたはさまざまな他のものの一つ。

これらのツールは習得するのに少し時間がかかるかもしれませんが、直面する正確な問題、つまり新しいマシンを仕様に合わせて構成する方法を正確に解決します。これらのツールを使用して、構成と設定をgitリポジトリのどこかに配置し、新しいマシンまたは仮想マシンでソルトまたはアンサーブルインストールをブートストラップし、リポジトリ操作の規則に従って残りのタスクを実行するようにします。


Ansibleはあなたが探しているものかもしれません。 Ansibleを使用すると、設定ファイルとコマンドの「プレイブック」を作成し、SSH経由でリモートで実行および実行できます。したがって、新しいサーバーを作成するときは、Ansible PlayBookを単に実行して完全に設定できます。


私はsaltstackの経験をたくさん持っているので、所有者がいない設定でそれを使用するより詳細な例を提供できます。 2つのファイルを含むリポジトリから:

wheel.slssudoがインストールされ、パスワードタイムアウトが無効になっていることを確認してください。

sudo:
  pkg.installed

/etc/sudoers.d/wheel:
  file.managed:
    - user: root
    - group: root
    - mode: 440
    - contents: |
        %wheel ALL=(ALL) ALL
        Defaults passwd_timeout=0

top.sls- どのシステムでどの状態を実行するかを決定するために使用するソルト(この場合、すべてがホイール.slsを実行します)

base:
  '*':
    - wheel

次に、ターゲットVM /サーバーにsalt-minionをインストールし、次のような構成を提供します。/etc/salt/minion

file_client: local
fileserver_backend:
  - git
gitfs_remotes:
  - [email protected]:user/repo.git:
    - pubkey: /etc/salt/ssh/github.pub
    - privkey: /etc/salt/ssh/github

github urlをリポジトリのURLに置き換え、パブリック/プライベートキーをリポジトリにアクセスできるキーに置き換えます。もちろん、それを拡張してより多くの作業を実行し、単一のパッケージをインストールし、より完全なサンプルチェックアウトのために単一のファイルを作成することもできます。この倉庫これには私の設定の公開部分が含まれています(もちろん、ほとんどの構成はプライベートストアにありますが、いくつかのアイデアを提供するのに十分です)。

より複雑な設定の場合は、専用マスターを実行するか、SSHを介してソルトを実行することもできます。

関連情報