私は次のことができるようにしたいです。
- 手動介入なしで最短時間内に必要に応じて構成されたUnixサーバーを起動します。
- 定期的にスクリプトを実行して、構成の変更が完了したことを確認し、誤った設定を変更することをお勧めします(たとえば、更新中に構成ファイルが置き換えられることがあるため)。
これを達成するには、どのスキルを選択する必要がありますか? (特定のソフトウェア推奨事項について議論する前に、これを行うさまざまな基本的な方法を理解してください。)
これは私が手動で行うことです(VirtualBoxからローカルに、またはVPSからリモートで)。角かっこは例の一部にすぎません。
- 設定ポイント(
visudo, adduser
) - パッケージのインストール(
sshd, php, nginx, mysql, ufw
) - インストールスクリプトの実行(
mysql_secure_installation
) - 構成コマンドの実行(
ufw allow
) - 構成ファイルの編集(
php.ini, sshd_config
) - データベースの入力(
cat db.sql | mysql
) - nginxネットワークファイルを埋める(
rsync local remote:
) - nginxを起動
今日の設定ファイルを確認する場合は、手動で確認する以外に良い戦略がないので、本当に難しいです。
Puppetなどについて聞いたことがありますが、正直なところ、その構文は少し恐れています。スキルを決めて学ぶのに時間を費やす前に、私はオプションを完全に見るのが好きです。
答え1
あなたが探しているのはServer Farmer(http://serverfarmer.org/) - Ansibleに似たアーキテクチャを持っていますが、もっとシンプルでほとんどBashで書かれています。
すべての主要クラウドプラットフォーム(AWS、Azure、Google Cloud、Hetzner、Alibaba Cloud、e24cloud、Rackspace、およびOpenStackベースのハイブリッドクラウド)から新しいインスタンスを作成することから、ネイティブホスト構成を介してアプリケーションプログラムをデプロイするまでのLinuxインスタンスのライフサイクル全体を処理します。 。
唯一の例外は、ファイアウォールの場合は.NETの代わりにiptablesを直接使用することですufw
。
次の2つのリポジトリをフォークして設定を調整することで起動できます。
- https://github.com/serverfarmer/serverfarmer- scripts/functions.customファイルを見る
- https://github.com/serverfarmer/sf-keys- すべてのファイルを見る
答え2
さまざまなオプションがあります。
- 同じことをするために人形を使っています。
- Puppet、Ansible、Saltstack、Chefなどを使用できます。
- ドッカーコンテナを使用し、ドッカーファイルを使用して必要な設定を実行できます。
- クラウドで事前設定された仮想マシン(openstack、aws)を使用し、必要に応じてそれらを起動してデータボリュームを接続できます。
答え3
Linodeなどの一部のプロバイダでは、必要に応じてシステムによって作成されたすべてのVPSに展開できる独自のイメージを作成できます。もちろん、独自のVirtualBox / VMWareテンプレートを作成して使用、複製、エクスポート、および他の人と共有することもできます。
しかし、固定観念から離れて考えてみると…ローカルVM、VPS、またはベアメタルハードウェアで動作できること -
仮想マシンを設定して各パッケージをインストールした後、構成する前に、パッケージの構成ディレクトリ(/etc/apache2
など)にgitリポジトリを作成します。リポジトリの設定、git commit、git pushを実行します。必要に応じてすべてのパッケージに対してこれを繰り返します。私のVPSでは、おそらくデフォルトのLAMP設定を実行し、dovecot + postfixなどを実行して、各サービスの組み合わせに独自のgitリポジトリがあるようにします。
control
その後、そのファイルを使用して偽のDebianパッケージを作成すると、通常インストールするequivs-build
すべてのもの(dovecot、postfix、apacheなど)にのみ依存するパッケージがあります。繰り返しますが、それを分割し、gitリポジトリを持つ各サービスの組み合わせへの依存関係を含む一致するパッケージ.debファイルを生成することを考えてみましょう。
だから新しいマシンに...
基本インストールを実行します。偽のパッケージをインストールし、依存関係(一般ソフトウェア)のインポートを適切に処理し、デフォルト設定でインストールします。次に、変更された構成を含むさまざまなリポジトリーのコピーをプルダウンし、構成ファイルを適切な場所に配置します。