GNU/Linux >> Linux の 問題 >  >> Linux

Linux に Chef Workstation をインストールしてセットアップする方法

Chef は、組織内のすべてのサーバーとネットワーク機器を管理するために使用できる IT インフラストラクチャ自動化ソフトウェアです。 .

シェフ サーバー、またはインフラストラクチャ内の物理ノード (サーバー、ネットワーク機器など) とやり取りする場合は、シェフ ワークステーションが必要です。

シェフ ワークステーションでは、いくつかのシェフ関連のコマンド (ナイフなど) を使用して、クックブックを作成したり、個々のノードで実行されるレシピを作成したりできます。シェフ ワークステーションから新しいノードを起動することもできます。

このチュートリアルでは、Linux サーバーに Chef ワークステーションをインストールして構成する方法について説明します。

ChefDK をダウンロード

ChefDK は、Chef 開発キットの略です。 ChefDK は、Debian ベースのディストリビューション、Ubuntu、CentOS、Mac OS X、Windows などの RedHat ベースのディストリビューションなど、ほぼすべてのプラットフォームで利用できます。

ChefDK の現在の安定バージョンは 0.11.2 です。RHEL ベースのシステムでは、バージョン 6 とバージョン 7 (つまり、CentOS 6 と CentOS 7) の両方で使用できます。パッケージ化された RPM バージョンは、64 ビット バージョンでのみ使用できます。

ここからダウンロードするか、以下に示す直接 URL を使用してください。

CentOS 7 の場合、以下を使用します:

cd ~
wget https://packages.chef.io/stable/el/7/chefdk-0.11.2-1.el7.x86_64.rpm

CentOS 6 の場合、以下を使用します:

cd ~
wget https://packages.chef.io/stable/el/6/chefdk-0.11.2-1.el6.x86_64.rpm

ChefDK をインストール

上記でダウンロードした RPM を使用して ChefDK をインストールします。

# rpm -ivh chefdk-0.11.2-1.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:chefdk-0.11.2-1.el7              ################################# [100%]
Thank you for installing Chef Development Kit!

これにより、以下に示すように /opt/chefdk に ChefDK がインストールされます。

# ls -l /opt/chefdk/
drwxr-xr-x. 2 root root  4096 Mar  3 13:50 bin
drwxr-xr-x. 7 root root    62 Mar  3 13:50 embedded
-rw-r--r--. 1 root root 13249 Feb 22 14:26 version-manifest.json
-rw-r--r--. 1 root root  8233 Feb 22 14:26 version-manifest.txt

ChefDK のインストールを確認する

以下に示すように、Chef 検証を実行します。これにより、ChefDK に付属するすべての異なるコンポーネントが問題なく正常に動作することが確認されます。

# chef verify
Running verification for component 'berkshelf'
Running verification for component 'test-kitchen'
Running verification for component 'tk-policyfile-provisioner'
Running verification for component 'chef-client'
Running verification for component 'chef-dk'
Running verification for component 'chef-provisioning'
Running verification for component 'chefspec'
Running verification for component 'generated-cookbooks-pass-chefspec'
Running verification for component 'rubocop'
Running verification for component 'fauxhai'
Running verification for component 'knife-spork'
Running verification for component 'kitchen-vagrant'
Running verification for component 'package installation'
Running verification for component 'openssl'
Running verification for component 'inspec'
.......
---------------------------------------------
Verification of component 'test-kitchen' succeeded.
Verification of component 'chef-dk' succeeded.
Verification of component 'chefspec' succeeded.
Verification of component 'rubocop' succeeded.
Verification of component 'knife-spork' succeeded.
Verification of component 'openssl' succeeded.
Verification of component 'berkshelf' succeeded.
Verification of component 'chef-client' succeeded.
Verification of component 'fauxhai' succeeded.
Verification of component 'inspec' succeeded.
Verification of component 'tk-policyfile-provisioner' succeeded.
Verification of component 'kitchen-vagrant' succeeded.
Verification of component 'chef-provisioning' succeeded.
Verification of component 'package installation' succeeded.
Verification of component 'generated-cookbooks-pass-chefspec' succeeded.

以下は、シェフの検証が失敗したケースの例です。また、ChefDK に組み込まれている Chef には ruby​​ が必要であることに注意してください。

# chef verify
..
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout.rb:289:in `invalid!': Expected process to exit with [0], but received '1' (Mixlib::ShellOut::ShellCommandFailed)
---- Begin output of /usr/bin/ohai -v ----
STDOUT: 
STDERR: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'chef-config' (= 12.8.0) - did find: [chef-config-12.7.2] (Gem::LoadError)

次のエラー メッセージが表示されます:「'chef-config' (=12.8.0) が見つかりませんでした – 見つかりました:[chef-config-12.7.2] (Gem::LoadError)」

上記のエラー メッセージでは、ChefDK に付属のchef-config は 12.7.2 で、これは古いバージョンであり、このセットアップでは互換性がありませんでした。したがって、この場合、chef-config バージョン 12.8.0 を手動でインストールしました。

その後、chef ベリファイを実行したところ、上記のエラー メッセージは表示されませんでした。

ChefDK のバージョンを確認する

Chef –version コマンドを実行すると、以下に示すように、ChefDK のバージョン番号とそれに付属するすべてのコンポーネントが表示されます。

# chef --version
Chef Development Kit Version: 0.11.2
chef-client version: 12.7.2
berks version: 4.2.0
kitchen version: 1.5.0

Chef ENV 変数のセットアップ

また、Chef 関連の環境変数もセットアップする必要があります。例:GEM_ROOT、GEM_HOME、GEM_PATH。

export GEM_ROOT="/opt/chefdk/embedded/lib/ruby/gems/2.1.0"
export GEM_HOME="/root/.chefdk/gem/ruby/2.1.0"
export GEM_PATH="/root/.chefdk/gem/ruby/2.1.0:/opt/chefdk/embedded/lib/ruby/gems/2.1.0"

また、システムにすでに ruby​​ がインストールされている場合は、以下に示すように、chefDK に付属の ruby​​ を使用するように、それに応じて PATH 変数を更新する必要があります。

export PATH="/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

次のコマンドは、設定する必要があるすべての Chef 環境変数を表示します。

chef shell-init bash

これらの環境変数を設定する簡単な方法は、以下に示すように、上記の行を .bash_profile ファイルに追加することです。

echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile

Chef Manage にアクセスするためのファイアウォール ルール

次に、すでに実行中の Chef Server から Chef スターター キットをダウンロードする必要があります。

Chef 管理 GUI にアクセスするには、Chef サーバーで次の firewalld ルールを追加して、Chef サーバーの適切なポートを開きます。

firewall-cmd --direct  --add-rule ipv4 \
filter INPUT_direct 0 -i eth0 -p tcp \
 --dport 443 -j ACCEPT

firewall-cmd --direct  --add-rule ipv4 \
filter INPUT_direct 0 -i eth0 -p tcp \
 --dport 80 -j ACCEPT

firewall-cmd --direct  --add-rule ipv4 \
filter INPUT_direct 0 -i eth0 -p tcp \
 --dport 9683 -j ACCEPT

firewall-cmd --reload

Chef Manage GUI からスターター キットをダウンロード

Chef Manage GUI にログインし、上部の「管理」タブをクリックします。次に、リストから組織を選択します。この例では、組織名は「example」です。組織を選択したら、以下に示すように、左側のメニューから [スターター キット] をクリックします。

[ダウンロード] をクリックすると、次の警告メッセージが表示されます。よろしいですか?:ユーザーと組織のキーがリセットされます。これを実行してもよろしいですか?.

[続行] をクリックします。これにより、chef-starter.zip ファイルがローカル マシンにダウンロードされます。

スターター キットの解凍

以下に示すように、chef-starter.zip ファイルを Chef ワークステーションに転送し、ルートのホーム ディレクトリで解凍します。

# cd ~
# unzip chef-starter.zip 
Archive:  chef-starter.zip
   creating: chef-repo/cookbooks/
   creating: chef-repo/cookbooks/starter/
   creating: chef-repo/cookbooks/starter/templates/
   creating: chef-repo/cookbooks/starter/templates/default/
  inflating: chef-repo/cookbooks/starter/templates/default/sample.erb  
   creating: chef-repo/cookbooks/starter/files/
   creating: chef-repo/cookbooks/starter/files/default/
  inflating: chef-repo/cookbooks/starter/files/default/sample.txt  
   creating: chef-repo/cookbooks/starter/recipes/
  inflating: chef-repo/cookbooks/starter/recipes/default.rb  
   creating: chef-repo/cookbooks/starter/attributes/
  inflating: chef-repo/cookbooks/starter/attributes/default.rb  
  inflating: chef-repo/cookbooks/starter/metadata.rb  
  inflating: chef-repo/cookbooks/chefignore  
  inflating: chef-repo/README.md     
  inflating: chef-repo/.gitignore    
   creating: chef-repo/.chef/
   creating: chef-repo/roles/
  inflating: chef-repo/.chef/knife.rb  
  inflating: chef-repo/roles/starter.rb  
  inflating: chef-repo/.chef/ramesh.pem  
  inflating: chef-repo/.chef/example-validator.pem

手動でchef-repoフォルダを設定している場合は、上記のサブディレクトリを手動で作成し、knife.rbファイル、organization-validator.pemファイル(例:example-validator.pem)、およびusername.pem ファイル (例:ramesh.pem) を上記のディレクトリにコピーします。

Chef サーバーの SSL 証明書を取得

この段階で、knife client list を実行すると、次のようなエラー メッセージが表示されます。

# cd ~/chef-repo
# knife client list
ERROR: SSL Validation failure connecting to host: centos.example.com - SSL_connect returned=1 errno=0 state=error: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.

Original Exception: OpenSSL::SSL::SSLError: SSL Error connecting to https://centos.example.com/organizations/example/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed

Chef サーバーから SSL 証明書をまだダウンロードしていないため、証明書の検証に失敗しました。

このために、以下に示すように、次の「knife ssl fetch」コマンドを実行します。

# cd ~/chef-repo
# knife ssl fetch
WARNING: Certificates from centos.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.

これにより、証明書が次の truster_certs ディレクトリにダウンロードされます。

# ls -l /root/chef-repo/.chef/trusted_certs
-rw-r--r--. 1 root root 1379 Mar 20 20:17 centos_example_com.crt

# cat /root/chef-repo/.chef/trusted_certs/centos_example_com.crt 
-----BEGIN CERTIFICATE-----
MIIDzDCCArSgAwIBAgIBADANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJVUzEQ
MA4GA1UECgwHWW91Q29ycDETMBEGA1UECwwKT3BlcmF0aW9uczEbMBkGA1UEAwwS
ZXJhdGlvbnMxGzAZBgNVBAMMEmNlbnRvcy5leGFtcGxlLmNvbTCCASIwDQYJKoZI
..
..
WLyr2ORLMcck/OGsubabO/koMNTqhl2JJPECNiDJh06MeZ/2+BOwGZSpXDbw+vFE
NJAsLfsTzihGWZ58einMFA==
-----END CERTIFICATE-----

Chef ワークステーションの最終検証

シェフのワークステーションが正常に動作している場合、「ナイフ クライアント リスト」を実行すると、このワークステーションに接続されているすべてのクライアントが表示されます。インストールしたばかりなので、以下に示すように、組織のバリデータのみが表示されます。

# cd ~/chef-repo

# knife client list
example-validator

すでに複数のサーバーが接続されている既存のシェフ ワークステーション マシンでこのコマンドを実行すると、シェフによって管理されているすべてのサーバーのリストが表示されます。

次の例では、5 つのサーバーがこのシェフ ワークステーションに接続されています。

# knife client list
example-validator
node1
node2
node3
node4
node5

Linux
  1. LinuxにAnsibleをインストールしてテストする方法

  2. LinuxでFlatpakをインストールして使用する方法

  3. LinuxでTracerouteをインストールして使用する方法

  1. LinuxにElasticsearchとKibanaをインストールする方法

  2. VMwareWorkstationにRHEL8をインストールする方法

  3. LinuxサーバーにcPanelをインストールしてセットアップする方法

  1. Ubuntu 18.04にChefサーバー、ワークステーション、Chefクライアントをインストールする方法

  2. KaliLinuxにtelnetをインストールして使用する方法

  3. Linux Screenをインストールして使用する方法は?