Ubuntu12.04上のSaltCloudを使用したDigitalOceanクラウドサーバーの自動プロビジョニング
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
このチュートリアルは、Ubuntu12.04にSaltをインストールする方法に基づいています| DigitalOcean は、操作可能なSaltCloudマスターサーバーの簡素化された基本的なセットアップを読者に提供することを目的としています。 DigitalOceanユーザーは、この採用を使用して、1、2、または一連のクラウドサーバーを作成するプロセスを自動化できます。
トータルインフラストラクチャ管理
Salt Stackは、オープンソースのクラウド展開、構成管理、リモート実行および監視パッケージです。 Salt について聞いたことがないかもしれませんが、PuppetまたはChefについてはご存知かもしれません。 Saltも同様のツールですが、リソースと要件の点で比較的軽量であり、はるかに使いやすいと考えるユーザーが増えています。 Salt、Puppet、Chefなどのツールを使用すると、複数のマシンで一度にコマンドを発行したり、ソフトウェアをインストールして構成したりできます。 Saltには、(i)構成管理と(ii)リモート実行の2つの主要な側面があります。 クラウドの展開はSaltCloudに任されています。
Salt Cloudは、パブリッククラウドサーバーの展開を自動化するように設計されたパブリッククラウドプロビジョニングツールです。 SaltをDigitalOceanと統合しますアプリケーションプログラミングインターフェイス(API) クリーンな方法で–そして(i)作成します。 (ii)規定および(iii)液滴の管理(すなわち クラウドまたは仮想プライベートサーバー)仮想マシンマップおよびプロファイルを介して。 DigitalOceanドロップレットは、個別に作成することも、大きなグループで作成することもでき、ログインしなくてもプロビジョニングして完全に管理できます。 単一の仮想マシンのデプロイから、クラウド全体のマッピングとプロビジョニングまで、SaltCloudは必要に応じてスケーラブルです。
前提条件
まず、Ubuntu12.04にSaltをインストールする方法を参照してください| DigitalOcean を使用して、VPSにSaltマスター/ミニオンを作成します。
セキュリティ強化
パブリックインターネットからアクセスできるサーバーはすべてセキュリティを強化する必要があり、Saltマスターも例外ではありません。
- Ubuntu 12.04を使用した初期サーバーセットアップのステップ5で説明されているように、SSHポートをデフォルトのポート22から1024未満のランダムポートに変更します。
ソルトマスターは、AES暗号化されたZeroMQ接続を使用してミニオンと通信します。 これらの通信は、マスターのみでアクセス可能である必要があるTCPポート4505および4506を介して行われます。
- 構成するファイアウォール必ず開いてくださいカスタムSSHポートと TCPポート4505および4506 ;
Ubuntuのデフォルトのファイアウォール構成ツールは ufw
. ソルトポートを開くには、次のコマンドを実行するだけです。
sudo ufw allow [custom SSH port below 1024]/tcp
sudo ufw allow salt
sudo ufw enable
sudo ufw status verbose
またパスワードログインを無効にするまたはデプロイ Fail2ban & DenyHosts 。
DigitalOceanコントロールパネル用のSSHキーペアの作成
Salt Cloudは、公開鍵暗号化を使用して、SaltマスターとDigitalOcean間の通信を保護します。 したがって、SSHキーを保存するディレクトリをマスターに作成します。
sudo mkdir /keys
次に、以下を実行します。
sudo ssh-keygen -t rsa
システムはキーを保存するファイルを入力してください(/root/.ssh/id_rsa):
で応答します。 コピーアンドペースト:
/keys/digital-ocean-salt-cloud
キーボードの「Enter」を押します。 パスフレーズの入力(パスフレーズがない場合は空):が表示され、オプションのパスワードの入力を求められます。 パスフレーズを入力しないでください。 代わりに、「Enter」キーを2回タップします。
新しい公開(SSH)キーは、「keys/digital-ocean-salt-cloud.pub」にあります。 最後に、以下を実行します。
cat /keys/digital-ocean-salt-cloud.pub
DigitalOceanドロップレットでSSHキーを使用する方法のステップ3で概説されているように、公開鍵をコピーしてDigitalOceanコントロールパネルに貼り付けます(コントロールパネルで公開鍵の名前をデジタルとして保存します- ocean-salt-cloud.pub )。
ホスト名と完全修飾ドメイン名(FQDN)
ソルトマスターのホスト名とFQDNが正しく設定されていることを確認します。 参照Ubuntu 12.04 でのホスト名と完全修飾ドメイン名(FQDN)の設定。
インストールツールを入手する
SaltStackはPythonプログラミング言語で構築されています。 そのため、 pip (Pythonで記述されたソフトウェアパッケージのインストールと管理に使用されるパッケージ管理システム)が必要になります。 さらに、Pythonのリポジトリから入手できますが、SaltStackのGitHubリポジトリからSaltCloudパッケージをダウンロードします。
システムにpip
とgit
をインストールするには、次のコマンドを実行します。
sudo apt-get -y install python-pip git
SaltCloudの依存関係をインストールする
まず、以下を実行します。
sudo apt-get -y install python-m2crypto
次に、以下を実行します。
sudo pip install pyzmq PyYAML pycrypto msgpack-python jinja2 psutil salt
次に、以下を実行します。
sudo pip install apache-libcloud
SaltCloudをインストールする
最後に、以下を実行します。
sudo pip install git+https://github.com/saltstack/salt-cloud.git#egg=salt_cloud
以下を実行して、SaltCloudが正常にインストールされたことを確認します。
salt-cloud --version
SaltCloudを構成する
Salt Cloudは、メインのSaltプロジェクトと同様のモジュールシステムで実行されます。 また、デフォルトでは、テンプレートファイルにPyYAML構文を使用しますが、他の多くのテンプレート言語も使用できます。 構成ファイルを作成するときは、タブの代わりに2つのスペースを使用するYAMLの適切なフォーマット手法に必ず従ってください。
オンラインYAMLパーサーは、YAMLファイルの構文の問題をトラブルシューティングするときに使用できます。
私。 コア構成
Salt Cloudのコア構成は、クラウド構成ファイルで処理されます。 このファイルは、システム内のすべてのクラウドプロバイダーに影響を与えるグローバル構成で構成されています。 さらに、クラウドファイルは、作成されたミニオンが構成を取得する場所です。
実行してクラウド構成ファイルを作成します(もちろん、任意のテキストエディターを使用できますが、このガイドでは、vimテキストエディターがインストールされていることを前提としています)。
sudo vim /etc/salt/cloud
キーボードで、 iキーをタップします。 矢印キーを使用してテキスト領域をナビゲートします。 クラウドファイルをコピーして貼り付けるか、以下の例のように作成します( master.yourdomain.tld
をSaltマスターのFQDNに置き換えます)。
provider: do
# Set the location of the Salt master
minion:
master: master.yourdomain.tld
保存して終了するには、キーボードの Esc キーをタップしてから、次のキーストロークを押します。1):2)w 3)q 4)Enterキーを押します。
さらにカスタマイズするために、コア構成ファイルで渡すことができる追加のその他のオプションが利用可能です。
クラウドプロバイダーモジュール
次に、2つの新しいディレクトリを作成します。
sudo mkdir /etc/salt/{cloud.profiles.d,cloud.providers.d}
これらの新しいディレクトリは、DigitalOcean固有のYAML構成ファイルを保持します。
II。 DigitalOceanクラウドプロバイダーの構成
DigitalOcean クラウドプロバイダー構成は、DigitalOceanアカウントへのアクセスを制御するために使用されます。 次のコマンドを実行して、DigitalOceanクラウドプロバイダー構成ファイルを作成します。
sudo vim /etc/salt/cloud.providers.d/digital_ocean.conf
iキーをタップします。 キーボードの矢印キーを使用して、テキスト領域をナビゲートします。 コピー&ペーストまたは作成 digital_ocean.conf 以下の例のようにファイルします。
do:
provider: digital_ocean
# Digital Ocean account keys
client_key: YourClientIDCopiedFromControlPanel
api_key: YourAPIKeyCopiedFromControlPanel
ssh_key_name: digital-ocean-salt-cloud.pub
# Directory & file name on your Salt master
ssh_key_file: /keys/digital-ocean-salt-cloud
保存して終了するには、キーボードの Esc キーをタップしてから、次のキーストロークを押します。1):2)w 3)q 4)Enterキーを押します。
DigitalOcean API
DigitalOceanでSaltCloudを使用するには、client_keyとapi_keyが必要です。 これらは、DigitalOceanコントロールパネルの[APIアクセス]タブにあります。
次に、 DigitalOcean APIの使用方法で概説されている手順に従って、アカウントのAPIキーを作成します。 DigitalOceanクライアントID
とAPIキー
の両方をコピーして、上記のクラウドプロバイダー構成ファイルに貼り付ける必要があります。
APIとの相互作用
/etc/salt/cloud.providers.d/digital_ocean.conf
でDigitalOceanプロバイダーを構成すると、次のコマンドにアクセスできるようになります。
sudo salt-cloud --list-images do
sudo salt-cloud --list-sizes do
sudo salt-cloud --list-locations do
sudo salt-cloud --help
これらのコマンドからの出力は、仮想サーバープロファイルの構築に必要な変数を提供するため、重要です。
III。 DigitalOceanクラウドプロファイル
次の手順を実行して、サーバーフリートのDigitalOceanクラウドプロファイルを作成します。
sudo vim /etc/salt/cloud.profiles.d/digital_ocean.conf
次に、キーボードでiキーをタップします。 矢印キーを使用してテキスト領域をナビゲートします。 コピー&ペーストまたは作成 digital_ocean.conf
以下の例のようにファイルします。
# Official distro images available for Arch, CentOS, Debian, Fedora, Ubuntu
ubuntu_512MB_ny2:
provider: do
image: Ubuntu 12.04.4 x64
size: 512MB
# script: Optional Deploy Script Argument
location: New York 2
private_networking: True
ubuntu_1GB_ny2:
provider: do
image: Ubuntu 12.04.4 x64
size: 1GB
# script: Optional Deploy Script Argument
location: New York 2
private_networking: True
ubuntu_2GB_ny2:
provider: do
image: Ubuntu 12.04.4 x64
size: 2GB
# script: Optional Deploy Script Argument
location: New York 2
private_networking: True
# Create additional profiles, if you wish
#[profile_alias_of_your_choosing]:
# provider: do
# image: [from salt-cloud --list-images do]
# size: [from salt-cloud --list-sizes do]
# script: [optional deployment script e.g. Ubuntu, Fedora, python-bootstrap, etc.]
# location: [from salt-cloud --list-locations do]
# private_networking: [True or False: currently only available in NY2 region]
保存して終了するには、キーボードの Esc キーをタップしてから、次のキーストロークを押します。1):2)w 3)q 4)Enterキーを押します。
提供されている例に加えて、Salt Cloudは複数の構成ファイルに対応できます。これにより、より拡張可能な構成が可能になり、さまざまな構成管理ツールやバージョン管理システムとうまく連携します。
クラウドVMのOSサポート
Salt Cloudは主に、新しくプロビジョニングされたドロップレットが利用可能になり次第、スクリプトを実行することで機能します。 クラウドプロファイルで別のデプロイスクリプトが宣言されていない限り、デフォルトで使用されるスクリプトは salt-bootstrapscriptです。 (Salt Cloud v0.8.9以降の)推奨される方法は、現在、デフォルトを使用することです。 salt-bootstrap
脚本。 の場合 salt-bootstrap
スクリプトがニーズを満たしていない場合は、スクリプト引数の展開または独自のを記述してください。
高度なトピック
VPSを作成する際には、この記事の範囲を超えるいくつかのオプションがあります。 このチュートリアルで概説されている基本原則に慣れたら、マップファイルを使用してより複雑なセットアップを作成する方法を学びたいと思うかもしれません。 マップファイルを使用すると、多数の仮想マシンを作成して特定のプロファイルに関連付けることができます。
新しいクラウドサーバーをプロビジョニングします!
新しいクラウドサーバーを作成するには、次のコマンドを実行します( hostname を任意のホスト名に置き換えます)。
sudo salt-cloud --profile ubuntu_512MB_ny2 hostname
すべてがうまくいけば、Salt minionでブートストラップされた新しくプロビジョニングされたサーバーが必要です(新しいminionのSSHキーはSaltマスターに自動的に追加されます)。 同じプロファイルから複数の仮想マシンをプロビジョニングする場合は、1つのコマンドでプロビジョニングできます。
sudo salt-cloud -p ubuntu_1GB_ny2 hostname1 hostname2 hostname3
( –profile
と-p
は交換可能であることに注意してください。)
ミニオン構成
クラウドサーバーの新しいフリートを構成するには、以下を参照してください。最初のソルトフォーミュラを作成する方法| DigitalOcean。
ミニオンを破壊する
SaltCloudコマンドを実行するときに渡すことができるさまざまなオプションがあります。 たとえば、特定のミニオンを破棄するには、次のコマンドを実行するだけです。
sudo salt-cloud -d hostname
追加リソース
- ソルトクラウドドキュメント;
- Salt Starters (状態ツリーやカスタムモジュールなどのSalt-Stack関連のコードを見つけて共有する場所);
- ソルトスタック式| GitHub ;
- よくある質問| ソルトスタック;
- すべてのDigitalOcean構成管理の記事。
いつものように、このハウツーで概説されている手順についてサポートが必要な場合は、以下の質問を提起して、DigitalOceanコミュニティに支援を求めてください。