Chefは自動化のための強力なプラットフォームであり、ネットワーク全体でインフラストラクチャを管理、展開、または構成する方法を簡素化します。 Chefは、インフラストラクチャをコードに変換することで動作します。その後、開発者は複数のサーバーまたはノードにリソースを展開または管理できますが、開発者が他の環境にコードを展開する前に、まずワークステーションでコードを作成してテストします。全体として、Chefはワークステーションからインフラストラクチャを管理するための最高のツールの1つです。
コンプライアンス、ノードの可視性、ワークフローのために、ChefAutomateはエンタープライズ機能の完全なスイートを利用できるようにします。このソフトウェアは、Habitat、InSpec、Chefなどのオープンソース製品と統合されています。
このチュートリアルでは、ChefサーバーとクライアントをUbuntu20.04にインストールする方法を説明します。
前提条件
- 2つ Atlantic.Netクラウドプラットフォーム上の新しいUbuntu20.04VPS。
1人のクライアント
1台のサーバー
- サーバーで構成されているrootパスワード
ステップ1–Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。少なくとも4GBのRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–ホスト名の設定
開始する前に、Chefサーバーで完全修飾ホスト名とホスト名解決を設定する必要があります。
まず、次のコマンドでホスト名を設定します。
hostnamectl set-hostname chef.example.com
次に、/ etc / hostsファイルを開き、サーバーのIPアドレスをホスト名にバインドします。
nano /etc/hosts
次の行を追加します:
chef-server-ip chef.example.com
終了したら、ファイルを保存して閉じます。
ステップ3–Chefサーバーをインストールする
まず、Chefサーバーで次のコマンドを実行して、必要な依存関係をインストールします。
apt-get install curl wget gnupg2 -y
次に、次のコマンドを使用してChefパッケージをダウンロードします。
wget https://packages.chef.io/files/stable/chef-server/13.1.13/ubuntu/18.04/chef-server-core_13.1.13-1_amd64.deb
パッケージがダウンロードされたら、次のコマンドを実行してインストールします。
dpkg -i chef-server-core_13.1.13-1_amd64.deb
パッケージをインストールしたら、Chefサーバーを再構成する必要があります。次のコマンドで再構成できます:
chef-server-ctl reconfigure
以下に示すように、ライセンス期間に同意するよう求められます。
+---------------------------------------------+ Chef License Acceptance Before you can continue, 3 product licenses must be accepted. View the license at https://www.chef.io/end-user-license-agreement/ Licenses that need accepting: * Chef Infra Server * Chef Infra Client * Chef InSpec Do you accept the 3 product licenses (yes/no)? > yes
yesと入力してライセンスに同意し、Enterキーを押して続行します。インストールが完了すると、次の出力が表示されます。
Running handlers: Running handlers complete Chef Infra Client finished, 482/1032 resources updated in 04 minutes 34 seconds Chef Server Reconfigured!
注 :インストールには5分以上かかります
ステップ4–管理者アカウントと組織を作成する
まず、すべてのキーを保存するディレクトリを作成します。
mkdir ~/.chef_key
次に、次のコマンドを実行して管理者アカウントを作成します。
chef-server-ctl user-create atlanticuser Atlantic User [email protected] 'mypassword' --filename ~/.chef_key/atlantic.pem
上記のコマンドは、名前がatlanticuser、フルネームが「Atlantic User」、パスワードが「mypassword」の管理者アカウントを作成し、〜/ .chef_key/atlantic.pemにキーファイルを生成します。
次に、次のコマンドを使用して組織を作成します。
chef-server-ctl org-create atlantic "atlantic cloud" --association_user atlanticuser --filename ~/.chef_key/atlantic-org.pem
上記のコマンドは、atlanticという名前、「atlantic cloud」というフルネームの組織を作成し、ユーザー「atlanticuser」を関連付け、〜/ .chef_key/atlantic-org.pemにキーファイルを生成します。
これで、次のコマンドを使用して、生成されたキーを確認できます。
ls ~/.chef_key/
次の出力が表示されます。
atlantic.pem hitjethva.pem
ステップ5–ChefWeb管理コンソールをインストールする
次に、サーバーにChefmanageをインストールする必要があります。 Chef manageは、WebベースのインターフェースからChefサーバーを管理するために使用できるアドオンです。
次のコマンドを使用して、Chefmanageをインストールできます。
chef-server-ctl install chef-manage
次に、次のコマンドを使用してChefサーバーとChef管理を再構成します。
chef-server-ctl reconfigure chef-manage-ctl reconfigure
以下に示すように、使用許諾契約に同意するよう求められます。
Press any key to continue. Type 'yes' to accept the software license agreement or anything else to cancel. yes
はいと入力します Enterキーを押して、インストールを完了します。
ステップ6–Chefクライアントをインストールする
次に、Chefクライアントマシンにログインして、Chefクライアントパッケージをインストールする必要があります。
次のコマンドを実行して、Chefワークステーションパッケージをダウンロードします。
wget https://packages.chef.io/files/stable/chef-workstation/20.6.62/debian/10/chef-workstation_20.6.62-1_amd64.deb
パッケージがダウンロードされたら、次のコマンドを使用してインストールします。
dpkg -i chef-workstation_20.6.62-1_amd64.deb
Chefクライアントをインストールした後、システムにChefリポジトリを作成する必要があります。 chef-repoディレクトリには、Chefクックブックやその他の関連ファイルが保存されます。
次のコマンドで作成できます:
chef generate repo chef-repo
以下に示すように、ライセンスに同意するように求められます。
+---------------------------------------------+ Chef License Acceptance Before you can continue, 3 product licenses must be accepted. View the license at https://www.chef.io/end-user-license-agreement/ Licenses that need accepting: * Chef Workstation * Chef Infra Client * Chef InSpec Do you accept the 3 product licenses (yes/no)? > yes
はいと入力します Enterキーを押して、ライセンスに同意します。次の出力が得られるはずです:
Persisting 3 product licenses... ✔ 3 product licenses persisted. +---------------------------------------------+ Generating Chef Infra repo chef-repo - Ensuring correct Chef Infra repo file content Your new Chef Infra repo is ready! Type `cd chef-repo` to enter it.
次のコマンドを使用して、Chefリポジトリ内で生成されたすべてのファイルとディレクトリを一覧表示できます。
ls chef-repo
次の出力が得られるはずです:
chefignore cookbooks data_bags LICENSE policyfiles README.md
次に、ChefサーバーでのRSAキーペア認証に使用されるすべてのKnife構成ファイルと.pemファイルを格納するための.chefディレクトリを作成する必要があります。
次のコマンドで作成できます:
mkdir ~/chef-repo/.chef
次に、次のコマンドを使用してSSHキーペアを生成します。
ssh-keygen -b 4096
パスワードは入力しないでください。Enterキーを押すだけで、以下に示すようにSSHキーペアが生成されます。
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa Your public key has been saved in /root/.ssh/id_rsa.pub The key fingerprint is: SHA256:OvOCW9vNnVfs8II8TKJnRxv9vwRu5R4JqRxWPVU1rTY [email protected] The key's randomart image is: +---[RSA 4096]----+ | .B| | . +| | . + | | . E .| | S o * + | | . + B B +| | .= . O * @ | | ...*.oo.O.= =| | ....ooo.oo ++| +----[SHA256]-----+
次に、次のコマンドを使用して、生成されたキーをChefサーバーマシンにコピーします。
ssh-copy-id [email protected]
次に、すべての.pemファイルをChefサーバーからクライアントマシンにコピーする必要があります。次のコマンドでそれらをコピーできます:
scp [email protected]:~/.chef_key/*.pem ~/chef-repo/.chef/
次の出力が得られるはずです:
atlantic.pem 100% 1674 2.2MB/s 00:00 hitjethva.pem 100% 1678 2.4MB/s 00:00
ステップ7–ナイフを構成してクックブックを生成する
次に、Knifeを構成し、クライアントマシンでクックブックを生成する必要があります。
まず、次のコマンドでリポジトリに変更します:
cd ~/chef-repo
次に、次のコマンドを使用して最初のクックブックを生成します。
chef generate cookbook my_cookbook
クックブックが生成されたら、新しいナイフ構成ファイルを作成します。
nano〜/ chef-repo / .chef / config.rb
次の行を追加します:
current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name 'hitjethva' client_key "hitjethva.pem" validation_client_name 'atlantic-validator' validation_key "atlantic-validator.pem" chef_server_url 'https://chef.example.com/organizations/atlantic' cache_type 'BasicFile' cache_options( :path => "#{ENV['HOME']}/.chef/checksums" ) cookbook_path ["#{current_dir}/../cookbooks"]
ファイルを保存して閉じます。
すべての名前が組織名および管理者ユーザー名と一致していることを確認してください。
次に、/ etc / hostsファイルを編集して、Chefサーバーの完全修飾名を追加します。
nano /etc/hosts
次の行を追加します:
chef-server-ip chef.example.com
終了したら、ファイルを保存して閉じます。
次に、次のコマンドを使用してChefサーバーからSSL証明書をフェッチします。
cd ~/chef-repo knife ssl fetch
次の出力が得られるはずです:
WARNING: Certificates from chef.example.com will be fetched and placed in your trusted_cert directory (/root/chef-repo/.chef/trusted_certs). Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading. Adding certificate for chef_example_com in /root/chef-repo/.chef/trusted_certs/chef_example_com.crt
次のコマンドを使用してSSLを確認することもできます。
knife ssl check
次の出力が得られるはずです:
Connecting to host chef.example.com:443 Successfully verified certificates from `chef.example.com'
ステップ8–クライアントノードをブートストラップする
次に、Chefクライアントをノードにインストールし、ノードを検証する必要があります。これにより、ノードはChefサーバーから読み取り、ワークステーションからchef-clientによって検出された必要な構成更新をプルダウンして適用できます。
Chefクライアントマシンで、次のコマンドを使用してディレクトリを.chefに変更します。
cd ~/chef-repo/.chef
次に、次のコマンドを使用してクライアントをブートストラップします。
knife bootstrap chef.example.com -x root -P rootpassword --node-name clientnode
インストールが完了すると、次の出力が表示されます。
Patents: https://www.chef.io/patents [chef.example.com] resolving cookbooks for run list: [] [chef.example.com] Synchronizing Cookbooks: [chef.example.com] Installing Cookbook Gems: [chef.example.com] [chef.example.com] Compiling Cookbooks... [chef.example.com] [2020-10-02T07:56:21+00:00] WARN: Node clientnode has an empty run list. [chef.example.com] Converging 0 resources [chef.example.com] [chef.example.com] Running handlers: Running handlers complete Chef Infra Client finished, 0/0 resources updated in 02 seconds
これで、次のコマンドを使用してすべてのノードを一覧表示できます。
knife client list
次の出力が得られるはずです:
atlantic-validator clientnode
ステップ9–ChefManageコンソールにアクセスする
次に、Webブラウザーを開き、URLhttp://chef.server-ip/loginを使用してChef管理コンソールにアクセスします。 Chefログインページが表示されます:
管理者のユーザー名とパスワードを入力し、署名をクリックします で ボタン。次のページにChefダッシュボードが表示されます。
結論
上記のガイドでは、Ubuntu20.04サーバーにChefサーバーとクライアントをインストールする方法を学びました。また、インストールと構成の設定でそのコンポーネントを学びました。詳細については、Chefのドキュメントをご覧ください。 Atlantic.Netの仮想プライベートサーバーでChefを試してみてください!