このチュートリアルでは、Ubuntu 16.04をインストールしたAlibaba Cloud Elastic Compute Service (ECS)上にChef Server Workstationを設定します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
アルスラーン・ウド・ディン・シャフィク(Alslan Ud Din Shafiq)著、Alibaba Cloud Tech Share 執筆、 Tech Shareは、技術的な知識やベストプラクティスをクラウドコミュニティ内で共有することを奨励するAlibaba Cloudのインセンティブプログラムです。
Chefは自動化のための強力なプラットフォームで、インフラストラクチャの設定、デプロイ、ネットワーク全体の管理を自動化するのに役立ちます。インフラストラクチャをコードに変換し、複数のノードやサーバーにまたがるリソースの管理とデプロイを可能にします。コードを他の環境に展開する前に、コードを作成し、ワークステーションでテストします。ワークステーションでは、インフラストラクチャを管理し、クックブックを書くことができます。
このチュートリアルでは、Ubuntu 16.04でAlibaba Cloud Elastic Compute Service (ECS)にChef Serverワークステーションをインストールして設定する方法を紹介します。
前提条件
- Alibaba Cloud Elastic Compute Service (ECS)を有効にし、有効な支払い方法を確認する必要があります。新規ユーザーの場合は、新規アカウントで300ドル~1200ドル相当のAlibaba Cloudクレジットを獲得できます。ECSインスタンスのセットアップ方法がわからない場合は、こちらのチュートリアルまたはクイックスタートガイドを参照してください。ECSインスタンスは、少なくとも8GBのRAMと4コアプロセッサを搭載している必要があります。
- Alibaba Cloudから登録されたドメイン名。すでにAlibaba Cloudまたは他のホストからドメインを登録している場合は、そのドメインネームサーバーレコードを更新することができます。
- ドメイン名は、あなたのAlibaba Cloud ECSのIPアドレスを指している必要があります。
- Alibaba CloudのVNCコンソールまたはPCにインストールされているSSHクライアントにアクセスします。
- サーバーのホスト名を設定し、root権限を持つユーザーを作成します。
サーバーの設定
パッケージのインストールを進める前に、以下のコマンドを使用してUbuntuシステムをアップデートしてください。このコマンドを実行するには、root 以外のユーザから sudo 権限でログインすることを忘れないでください。
# sudo apt update && sudo apt upgrade
Chef Serverをインストール
Chefサーバーは、Chefを使用するすべてのノードとワークステーション間の相互作用のハブとして動作します。変更が加えられると、これらはChefサーバーにアップロードされます。その後、ChefクライアントはChefサーバにアクセスし、各ノードの設定をサポートします。Chefサーバーをインストールするには、以下の手順に従ってください。
Chefサーバーのコアをダウンロードする必要があります。ダウンロードするには、以下のコマンドを実行します。
# wget https://packages.chef.io/files/stable/chef-server/12.17.33/ubuntu/16.04/chef-server-core_12.17.33-1_amd64.deb
以下のコマンドを使用して.debをデパッケージしてインストールする必要があります。
# sudo dpkg -i chef-server-core_12.17.33-1_amd64.deb
以下のコマンドを実行して、ダウンロードした.debファイルを削除します。
# sudo rm chef-server-core_12.17.33-1_amd64.deb
以下のコマンドを実行して、Chefサーバーのコマンドラインユーティリティを起動します。これでChefサーバーのサービスが起動します。
# sudo chef-server-ctl reconfigure
インストールが成功すると以下の画面が表示されます。
Chefのユーザーと組織を作成
ノードとワークステーションをChefサーバーにリンクするには、RSA秘密鍵を関連付けた管理者ユーザーと組織を作成する必要があります。そのためには、以下の手順に従ってください。
以下のコマンドを実行して、キーを保存するディレクトリを作成します。
# mkdir .chef
ユーザーを作成するには、Chefコマンドラインユーティリティを使用します。以下のコマンドを実行してユーザーを作成し、aareezを希望のユーザー名に、123@example.comを希望のメールアドレスに、ファイル名 aareez.pemをyour_username.pemに、654321Abを希望のパスワードに、Arslanをファーストネームに、Malikをラストネームに置き換えることを忘れないようにしてください。
# sudo chef-server-ctl user-create aareez Arslan Shafiq 123@example.com '654321Ab' --filename ~/.chef/aareez.pem
組織を作成し、上記の手順で作成したユーザーをadminsとbilling adminsのセキュリティグループに追加します。そのためには、以下のコマンドを実行します。
# sudo chef-server-ctl org-create org_name "org_full_name" --association_user aareez --filename ~/.chef/org_name.pem
org_name と org_full_name を組織名に、aareez をユーザー名に置き換えることを忘れないでください。
Gitをインストール
Chef Workstation用のAlibaba Cloudインスタンスを新規作成し、アップデートします。
# sudo apt update && sudo apt upgrade
以下のコマンドでGitをインストールします。
# sudo apt-get install git
(オプション) 以下のコマンドを実行して Git を設定します。名前と有効なメールアドレスを指定することで、コミットメッセージに正しい情報が含まれるようになります。
# git config --global user.name "Aareez"
# git config --global user.email "xyz@example.com”
Chef ワークステーションを設定
Chef ワークステーションを使用すると、レシピ、クックブック、属性、および Chef の設定に加えられたその他の変更を作成して設定することができます。Chef Development Kitをインストールして設定するには、以下の手順に従ってください。
以下のコマンドを実行してChef Development Kitをダウンロードする必要があります。
# wget https://packages.chef.io/files/stable/chefdk/3.3.23/ubuntu/16.04/chefdk_3.3.23-1_amd64.deb
Chef Development Kitをインストールするには、以下のコマンドを実行します。
# sudo dpkg -i chefdk_3.3.23.23-1_amd64.deb
以下のコマンドを実行して、ダウンロードした.debファイルを削除します。
# sudo rm chefdk_3.3.23-1_amd64.deb
以下のコマンドを実行してchef-repoを生成します。
# chef generate app chef-repo
chef-repoに移動します。
# cd chef-repo
aareez.pem、organization-validator.pem、knife.rbを格納する.chefディレクトリを作成します。以下のコマンドを実行します。
# mkdir .chef
RSA 秘密鍵の追加
Chefサーバの設定・インストール時に生成されたRSAキーをワークステーションに配置します。そのためには、以下のコマンドを実行します。
# scp aareez@softpedia.xyz:~/.chef/*.pem ~/chef-repo/.chef/.chef/.
aareezをユーザー名に、softpedia.xyzをドメイン名またはECSのIPアドレスに置き換えることを忘れないでください。
ファイルが正常にコピーされたかどうかを確認するには、以下のコマンドを実行します。
# ls ~/chef-repo/.chef
バージョン管理の設定
.gitignore ファイルに .chef ディレクトリを追加する必要があります。そのためには、以下のコマンドを実行します。
# echo ".chef" > .gitignore
既存のファイルをすべて追加してコミットする必要があります。そのためには、以下のコマンドを実行します。
追加するには、以下のコマンドを実行します:# git add .
コミットする場合は以下のコマンドを実行します: # git commit -m "initial commit"
以下のコマンドを実行することでステータスを確認することができます。
# git status
knife.rbを生成する
knife.rbファイルを生成するには、以下の手順に従います。
以下のコマンドを実行して/chef-repo/.chefに移動します。
# cd ~/chef-repo/.chef
knife.rbというファイルを作成し、以下のコマンドを実行するとnano text editorでファイルが開きます。
# sudo nano knife.rb
開いたファイルに以下のテキストをコピーして貼り付けます。aareezはChefサーバーのユーザー名、org_nameは組織名、chef_server_urlの値は独自のドメインまたはIPアドレスに置き換えることを忘れないでください。
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'aareez'
client_key "aareez.pem"
validation_client_name 'org_name-validator'
validation_key "org_name-validator.pem"
chef_server_url 'https://softpedia.xyz/organizations/org_name'
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
/chef-repo に移動して、以下のコマンドを使って取得してください。
# cd ..
# knife ssl fetch
knife.rbが正しく設定されているかどうかは、以下のコマンドを実行することで確認できます。
# knife client list
ワークステーションとサーバが設定されていれば、最初のノードをブートストラップすることができます。
ノードをブートストラップする
ノードのブートストラップでは、Chefクライアントがインストールされます。これはノードを検証し、Chefサーバからの読み込みと設定を可能にします。ノードをブートストラップするには、以下の手順に従ってください。
以下のコマンドを実行して/chef-repo/.chefに移動します。
# cd ~/chef-repo/.chef
sudo権限を持つユーザーとして、以下のコマンドを実行します。aareezにはノードのユーザ名、654321Abにはユーザのパスワード、softpedia.xyzにはChefサーバのIPアドレスまたはドメイン、imaareezにはノードに付けたい名前を指定します。
# knife bootstrap softpedia.xyz -x aareez -P 654321Ab -sudo --node-name imaareez
以下のコマンドを実行することで、ノードがブートストラップされているかどうかを確認することができます。
# knife client list
ファイアウォールとポートの設定
ファイアウォールを有効にしている場合は、クラウドサーバーの Alibaba Cloud セキュリティグループで、ポート 80/tcp と 443/tcp の例外を追加するルールを定義する必要があります。ECSインスタンスを作成する際にこれらのポートを有効にすることができますが、これらのポートのブロックを解除し忘れた場合は、このガイドの手順に従うことができます: https://www.alibabacloud.com/help/doc-detail/25471.htm
おめでとうございます。これで、ECSインスタンスにChef ServerとChef Server Workstationが正常にインストールされ、設定されました。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ