ナイフ用のDigitalOceanプラグインを使用してChefのドロップレットを管理する方法
序章
Chefは、制御された反復可能な方法でインフラストラクチャを構築および管理できるようにする構成管理システムです。 Chefを使用すると、インフラストラクチャの決定がすべて一元的に文書化され、いつでも簡単に再実装できるようになります。
以前の記事では、基本的なChefの用語、ソフトウェアのインストール方法( Chef12またはChef11 を使用)、の操作方法について説明しました。クックブック、および役割と環境の操作方法。
この記事では、Chef構成ツールであるknifeのプラグインを使用して、DigitalOceanドロップレットを操作する方法について説明します。 このツールを使用すると、インフラストラクチャドロップレットを作成し、Chefシステム内から簡単に構成できます。
サーバーとワークステーションをインストールして構成し、新しいノードを作成してブートストラップする方法を知っていることを前提としています。
KnifeDigitalOceanプラグインをインストールします
Chefシステム内からDigitalOceanドロップレットの操作を開始する前に、ナイフツール用のDigitalOceanプラグインをインストールする必要があります。
これは、gemをインストールするだけで実行できます。
ワークステーションの構成方法で、次のように入力した場合:
gem install knife-digital_ocean
次のようなエラーが発生します。
Fetching: knife-digital_ocean-0.4.0.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /opt/chef/embedded/lib/ruby/gems/1.9.1 directory.
同様に、このコマンドを次のコマンドで実行すると sudo
、コマンドが見つかりません:
sudo gem install knife-digital_ocean
sudo: gem: command not found
問題は、ユーザーの環境内でChef実行可能ファイルへのパスを指定したが、コマンドを正しく実行するために必要な特権がないことです。
シェフへのフルパスを使用してこれを回避できます gem
実行可能:
sudo /opt/chef/embedded/bin/gem install knife-digital_ocean
これにより、DigitalOceanナイフプラグインがインストールされ、含まれている機能を利用できるようになります。
DigitalOceanクレデンシャルを使用してKnifeプラグインを構成します
ナイフプラグインを使用するには、DigitalOceanアカウントを使用するためのナイフ認証を与える必要があります。 これは、アカウントのAPIキーとクライアントIDを使用して実行できます。
DigitalOceanコントロールパネルで、左側のナビゲーションメニューのAPIリンクをクリックします。 アカウントの「クライアントID」がここに表示されます。
すぐに設定ファイルにこの値が必要になります。
すでにAPIキーを生成している場合は、それを使用してDigitalOceanアカウントに接続している別のアプリケーションからその値を収集する必要があります。 セキュリティ対策として、インターフェースから現在のAPI値を取得することはできません。
APIキーをまだ生成していない場合、または古いキーを紛失したか不要になった場合は、[新しいキーの生成]ボタンを入力して新しいキーを生成できます。
新しいキーを生成したら、画面を終了する前に、生成された値をコピーする必要があります。 上記のように、このページを離れるとこの値にアクセスできなくなります。そのため、新しい値を生成するか、すでに使用しているアプリケーションからAPIキーを取得する必要があります。
クライアントIDとAPIキーの両方を取得したら、これらの値を使用するようにknifeを構成する準備が整います。
ワークステーションで、Chefリポジトリ内のChef構成ディレクトリに移動します。
cd ~/chef-repo/.chef
編集します knife.rb
次の場所にあるファイル:
nano knife.rb
log_level :info
log_location STDOUT
node_name 'station1'
client_key '/home/demo/chef-repo/.chef/station1.pem'
validation_client_name 'chef-validator'
validation_key '/home/demo/chef-repo/.chef/chef-validator.pem'
chef_server_url 'https://chef_server.com:443'
syntax_check_cache_path '/home/demo/chef-repo/.chef/syntax_check_cache'
cookbook_path [ '/home/demo/chef-repo/cookbooks' ]
ファイルの最後に、次のように資格情報を追加する必要があります。
log_level:info log_location STDOUT node_name'station1' client_key'/home/demo/chef-repo/.chef/station1.pem' validate_client_name'chef-validator' validate_key'/home/demo/chef-repo/.chef/chef-validator .pem'chef_server_url' https://chef_server.com:443'syntax_check_cache_path' /home/demo/chef-repo/.chef/syntax_check_cache'cookbook_path ['/home/demo/chef-repo/cookbooks']knife [:digital_ocean_client_id ] =' your_client_id 'ナイフ[:digital_ocean_api_key] =' your_api_key '
完了したら、ファイルを保存して閉じます。
これで、現在アクティブなドロップレットのリストを要求することで、knifeがDigitalOceanサーバーに接続できるかどうかをテストできます。 ナイフコマンドを実行する前に、Chefリポジトリにいることを確認してください。
cd ~/chef-repo
knife digital_ocean droplet list
ID Name Size Region IPv4 Image Status
111111 irssi 512MB New York 1 111.111.111.111 479972 (N/A) active
222222 try 4GB New York 2 222.222.222.222 1575388 (Ubuntu-Init) active
333333 nftables 4GB New York 2 333.333.333.333 308287 (Debian 7.0 x64) active
4444444 snmp 4GB New York 2 444.444.444.444 1575388 (Ubuntu-Init) active
5555555 node 4GB New York 2 555.555.555.555 1575388 (Ubuntu-Init) active
現在のドロップレットのリストを取得すると、接続に成功し、認証が機能しています。
ChefワークステーションでSSHキーを構成する
ナイフツールを使用してDigitalOceanアカウントに接続できるようになったので、さらに一歩進んで液滴作成プロセスを自動化する必要があります。 作成するドロップレットに埋め込むために、Chefワークステーション用のSSHキーを作成する必要があります。
ワークステーションコンピュータで、次のように入力して新しいSSHキーを作成する必要があります。
ssh-keygen
プロンプトからEnterキーを押して、デフォルト値を受け入れます。 これにより、ユーザーのホームディレクトリに隠されたサブディレクトリが作成されます。 .ssh
内部に公開鍵と秘密鍵があります。
次のように入力して、今すぐこのディレクトリに移動します。
cd ~/.ssh
ls
id_rsa id_rsa.pub known_hosts
今必要なファイルは id_rsa.pub
ファイル。 次のように入力すると、このファイルの内容を表示できます。
cat id_rsa.pub
sh-rsa AAAAB3NzaC1yc2EAAAAxAQABAAABAQCv60WjxoM39LgPDbiW7ne3gu18q0NIV.....................lANpl5qmhDQ+GS/sO............mHWL2irjuB9xBXr00+44vSd2q/vtXdGXhdSMTf4/XK17fjKSG/9y3yD6nml6q9XgQxx9Vf/IKaKdlK0hbC1ds0+8/83PTb9dF3L7hf3Ch/ghvj5++twJFdFeG+VI7EDuKNA4zL8C5FdY.....................XIIeZvZ/z9Kp.....................nyiIuEAmn8fbnosWcsovw0IS1Hz6HsjYo4bu/gA82LWt3sdRUBZ/7ZsVD3ELip
[email protected]
DigitalOceanコントロールパネルに戻り、左側のメニューの[SSHキー]リンクをクリックします。 右上隅にある[SSHキーの追加]ボタンをクリックします。
次のページで、新しいキーの名前を作成し、ファイルの内容を指定された領域に貼り付けます。
終了したら、下の[SSHキーの作成]ボタンをクリックします。
これで、ChefサーバーからのSSHキーを新しいドロップレットに埋め込むことができるはずです。 これにより、インターフェイス内からドロップレットを作成し、ログインして、作成したクックブックとロールを使用してサーバーを構成できるようになります。すべて1つのステップで実行できます。
ナイフプラグインの操作
ナイフプラグインの使用を開始しましょう。
まず、DigitalOceanアカウントに関連付けられているドロップレットをもう一度クエリします。
knife digital_ocean droplet list
ID Name Size Region IPv4 Image Status
111111 irssi 512MB New York 1 111.111.111.111 479972 (N/A) active
222222 try 4GB New York 2 222.222.222.222 1575388 (Ubuntu-Init) active
333333 nftables 4GB New York 2 333.333.333.333 308287 (Debian 7.0 x64) active
4444444 snmp 4GB New York 2 444.444.444.444 1575388 (Ubuntu-Init) active
5555555 node 4GB New York 2 555.555.555.555 1575388 (Ubuntu-Init) active
これにより、液滴の概要がわかります。
ナイフプラグインはかなりシンプルですが、DNS機能を除いて、アカウント内のドロップレットを制御するために必要なすべての要素が含まれています。 主な機能は、クエリから取得できる情報を使用してドロップレットを作成および破棄することです。
Knifeプラグインを使用した情報のクエリ
さまざまなナイフクエリを使用して、作成コマンドと破棄コマンドに必要なすべての情報を見つけることができます。
ベース画像として使用できる標準のDigitalOcean画像を見つけるために、これを入力できます。 The -G
フラグは「グローバル」を表します。
knife digital_ocean image list -G
ID Distribution Name Global
361740 Arch Linux Arch Linux 2013.05 x32 +
350424 Arch Linux Arch Linux 2013.05 x64 +
1602 CentOS CentOS 5.8 x32 +
1601 CentOS CentOS 5.8 x64 +
376568 CentOS CentOS 6.4 x32 +
. . .
これにより、新しいドロップレットを展開するために使用できるすべてのワンクリックアプリケーションを含む、すべての標準DigitalOceanイメージが提供されます。 ID列は、正しいイメージから展開するために注意する必要がある項目です。
同様に、スナップショットやバックアップなどのリストが必要な場合は、同じコマンドを入力せずに入力できます。 -G
国旗:
knife digital_ocean image list
ID Distribution Name Global
11xxxxx Ubuntu Dokku -
15xxxxx Ubuntu Ubuntu-Init -
15xxxxx Ubuntu Ubuntu-LAMP -
15xxxxx Ubuntu Ubuntu-WP -
このリストのイメージIDをベースイメージとして使用して、柔軟性を高めることもできます。
ドロップレットをデプロイするために使用できる領域を見つけるには、次のように入力します。
knife digital_ocean region list
ID Name
1 New York 1
2 Amsterdam 1
3 San Francisco 1
4 New York 2
5 Amsterdam 2
ドロップレットを展開するサイズのリストについては、次のように入力できます。
knife digital_ocean size list
ID Name
63 1GB
62 2GB
64 4GB
65 8GB
61 16GB
. . .
イメージ内に埋め込むことができるSSHキーを一覧表示するには、次のコマンドを発行できます。
knife digital_ocean sshkey list
ID Name
11111 Home key
22222 Chef key
ドロップレットの作成と破棄
これで、液滴を作成および破棄するために必要なすべての情報を取得する方法がわかりました。
破壊は常に作成よりも少ない労力で済むため、液滴を破壊することから始めることができます。
液滴を破壊するために必要なのは、液滴のIDだけです。 これは、液滴リストの最初の列で利用できます。
knife digital_ocean droplet list
ID名前サイズリージョンIPv4イメージステータス111111irssi512MB New York 1 111.111.111.111 479972(N / A)active 222222 try 4GB New York 2 222.222.222.222 1575388(Ubuntu-Init)active 333333 nftables 4GB New York 2 333.333.333.333 308287( Debian 7.0 x64)アクティブ4444444snmp4GBニューヨーク2444.444.444.4441575388(Ubuntu-Init)アクティブ5555555ノード4GBニューヨーク2 555.555.555.555 1575388(Ubuntu-Init)アクティブ
削除するドロップレットのIDを取得したら、次のように入力して使用できます。
ナイフdigital_ocean液滴は111111を破壊します
これにより、削除のためにドロップレットがキューに入れられます。
ドロップレットを作成するには、より多くの情報が必要になります。 DigitalOceanコントロールパネルで通常入力する必要のあるフィールドはすべて、このコマンドにパラメーターとして入力する必要があります。
コマンドは次のようになります。
ナイフdigital_oceanドロップレットcreate--server- namename_for_server --image image_id --location region_id --size size_id --ssh-keys ssh_key_ids --bootstrap --run-list“ノード_run_list ”
たとえば、1111のSSHキーを使用してNY2リージョンの1Gドロップレットに「hello」というx86_64 Ubuntu 12.04インスタンスを作成するには、次のように入力します。
ナイフdigital_ocean液滴作成--server-namehello--image 1505447 --location 4 --size 63 --ssh-keys 22222
オンラインで接続できるように、ChefワークステーションのSSHキーを渡していることを確認してください。
ドロップレットの作成時にブートストラップし、run_listを渡してソフトウェアをインストールおよび構成する場合は、追加のパラメーターを追加できます。 ここで、新しいサーバーをWebサーバーとして構成するように指示できます。
ナイフdigital_oceanドロップレット作成--server-namehello--image 1505447 --location 4 --size 63 --ssh-keys 22222 --bootstrap --run-list“ role [web_server]”
これにより、ノードのrun_listを作成した後に編集した場合と同じように、ロールに固有のすべてのレシピと属性が適用されます。
結論
DigitalOceanナイフプラグインを使用すると、必要に応じて新しいインフラストラクチャリソースを簡単に起動できます。 たとえば、データベースが以前よりも多くのトラフィックを取得している場合、その負荷を管理するために追加のデータベースサーバーを起動するのは簡単です。
インフラストラクチャを管理するのと同じ環境で新しいVPSインスタンスを作成する機能を含めることで、適切に設計されたクックブック、ロール、および属性を使用してインフラストラクチャを簡単にスケールアウトできます。 スケーリングは、方法ではなく、いつの問題になる可能性があります。