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

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

Chefは、インフラストラクチャをコードとして定義するために使用されるRubyベースの構成管理ツールです。これにより、ユーザーは多くのノードの管理を自動化し、それらのノード間の一貫性を維持できます。レシピは、管理対象ノードの望ましい状態を宣言し、ChefWorkstationパッケージを使用してユーザーのワークステーションで作成されます。レシピは、Chefサーバーを介してノード間で配布されます。各ノードにインストールされているChefクライアントは、対応するノードへのレシピの適用を担当します。このガイドでは、ChefServerとChefWorkstationをインストールおよび構成する方法について説明します。また、Chefで管理するノードをブートストラップします。

このチュートリアルでは、次のことを学びます。

  • Chefサーバーのインストールと構成
  • Chefユーザーと組織を作成する
  • Chefワークステーションのインストールと構成
  • ナイフの構成とクライアントノードのブートストラップ

<中央>

シェフの建築。

使用されるソフトウェア要件と規則

システム ソフトウェア その他 規約
ソフトウェア要件とLinuxコマンドラインの規則
カテゴリ 使用する要件、規則、またはソフトウェアバージョン
Ubuntu Linux 18.04
Chefサーバーコア、Chefワークステーション、Chefクライアント、Chef開発キット
rootまたはsudoを介したLinuxシステムへの特権アクセス コマンド。
–指定されたLinuxコマンドは、rootユーザーとして直接、またはsudoを使用して、root権限で実行する必要があります。 コマンド
$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります

Chefサーバーのインストールと構成

Chefサーバーは、Chefの管理下にあるすべてのワークステーションとノード間の相互作用のハブです。ワークステーションで構成コードに加えられた変更はChefサーバーにプッシュされ、ノードのchef-clientによってプルされて構成が適用されます。

以下のコマンドを実行して、最新のChefサーバーをダウンロードします。

# wget https://packages.chef.io/files/stable/chef-server/12.18.14/ubuntu/18.04/chef-server-core_12.18.14-1_amd64.deb

次に、次のコマンドでサーバーパッケージをインストールします。

# dpkg -i chef-server-core_*.deb

Chefサーバーには、chef-server-ctlというコマンドラインユーティリティが含まれています。 chef-server-ctlを実行して、Chefサーバーサービスを開始します。

# chef-server-ctl reconfigure

chefサーバーが正常に構成されると、以下のメッセージが表示され、chefサーバーの実行ステータスも確認されます。

Chef Client finished, 493/1100 resources updated in 12 minutes 02 seconds
Chef Server Reconfigured!
root@ubuntubox1:~# chef-server-ctl status
run: bookshelf: (pid 1435) 6644s; run: log: (pid 1440) 6644s
run: nginx: (pid 1235) 6653s; run: log: (pid 1744) 6631s
run: oc_bifrost: (pid 1196) 6657s; run: log: (pid 1203) 6657s
run: oc_id: (pid 1220) 6655s; run: log: (pid 1227) 6655s
run: opscode-erchef: (pid 4376) 6432s; run: log: (pid 1508) 6644s
run: opscode-expander: (pid 1335) 6648s; run: log: (pid 1431) 6646s
run: opscode-solr4: (pid 1244) 6650s; run: log: (pid 1285) 6649s
run: postgresql: (pid 1176) 6659s; run: log: (pid 1180) 6659s
run: rabbitmq: (pid 4188) 6443s; run: log: (pid 1748) 6631s
run: redis_lb: (pid 27397) 6931s; run: log: (pid 1735) 6632s
root@ubuntubox1:~#

Chefユーザーと組織を作成する

ワークステーションとノードをChefサーバーにリンクするには、RSA秘密鍵が関連付けられた管理者と組織を作成します。
ホームディレクトリから、鍵を格納する.chefディレクトリを作成します。

# mkdir .chef

chef-server-ctlを使用してユーザーを作成します。この例では、必要に応じて、USER_NAME、FIRST_NAME、LAST_NAME、EMAIL、およびPASSWORDを変更します。 USER_NAME.pemを調整し、.pem拡張子を残します。

chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename ~/.chef/USER_NAME.pem
root@ubuntubox1:~# chef-server-ctl user-create chefadmin Chef Administrator chefadmin@@ubuntubox1.com '*******' --filename ~/.chef/chefadmin.pem

Chefサーバー上のすべてのユーザーのリストを表示するには、次のコマンドを発行します。

root@ubuntubox1:~# chef-server-ctl user-list
chefadmin
pivotal

組織を作成し、前の手順で作成したユーザーを追加します。 ORG_NAMEを組織の短い識別子に、ORG_FULL_NAMEを組織の完全な名前に、USER_NAMEを上記の手順で作成したユーザー名に、ORG_NAME.pemを組織の短い識別子の後に.pemに置き換えます。

chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" --association_user USER_NAME --filename ~/.chef/ORG_NAME.pem
root@ubuntubox1:~# chef-server-ctl org-create chef-on-ubuntu "Chef Infrastructure on Ubuntu 18.04" --association_user chefadmin --filename ~/.chef/chef-on-ubuntu.pem

Chefサーバー上のすべての組織のリストを表示するには、次のコマンドを使用します。

root@ubuntubox1:~# chef-server-ctl org-list
chef-on-ubuntu

Chefサーバーがインストールされ、RSAキーが生成されたら、Chefワークステーションの構成を開始します。ワークステーションは、ノードのすべての主要な構成が作成される場所です。

Chefワークステーションのインストールと構成

Chefワークステーションは、ノードの管理に必要なレシピ、クックブック、属性、およびその他の変更を作成および構成する場所です。これは任意のOSを実行するローカルマシンにすることができますが、リモートサーバーをワークステーションとして保持し、どこからでもアクセスできるようにすることにはいくつかの利点があります。

このセクションでは、Chefワークステーションパッケージをダウンロードしてインストールします。このパッケージには、Chefの開発キットであるChefDKに含まれているすべてのツールが含まれています。

最新のChefワークステーションをダウンロードする:

root@ubuntubox2:~# wget  https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
--2019-06-03 13:35:51--  https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
Resolving packages.chef.io (packages.chef.io)... 151.101.142.110
Connecting to packages.chef.io (packages.chef.io)|151.101.142.110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 129713682 (124M) [application/x-debian-package]
Saving to: ‘chef-workstation_0.2.43-1_amd64.deb’

chef-workstation_0.2.43-1_amd64.deb       100%[=====================================================================================>] 123.70M  1.51MB/s    in 80s

2019-06-03 13:37:17 (1.55 MB/s) - ‘chef-workstation_0.2.43-1_amd64.deb’ saved [129713682/129713682]

Chefワークステーションのインストール:

root@ubuntubox2:~# dpkg -i chef-workstation_*.deb
Selecting previously unselected package chef-workstation.
(Reading database ... 117468 files and directories currently installed.)
Preparing to unpack chef-workstation_0.2.43-1_amd64.deb ...
Unpacking chef-workstation (0.2.43-1) ...
Setting up chef-workstation (0.2.43-1) ...

To run the experimental Chef Workstation App, use your
platform's package manager to install these dependencies:

        libgconf-2.so.4 => not found
You can then launch the App by running 'chef-workstation-app'.
The App will then be available in the system tray.

Thank you for installing Chef Workstation!
You can find some tips on getting started at https://chef.sh/

次に、Chefリポジトリを作成する必要があります。 chef-repoディレクトリには、Chefクックブックやその他の関連ファイルが保存されます。

# chef generate repo chef-repo

.chefサブディレクトリを作成します。 .chefサブディレクトリには、ChefサーバーとのRSAキーペア認証に使用されるKnife構成ファイルと.pemファイルが格納されます。 chef-repoディレクトリに移動します:

root@ubuntubox2:~# mkdir ~/chef-repo/.chef
root@ubuntubox2:~# cd chef-repo
root@ubuntubox2:~/chef-repo#

Chefサーバーとワークステーションおよび/またはノード間の認証は、公開鍵暗号化を使用して完了します。これにより、Chefサーバーは信頼できるマシンとのみ通信するようになります。このセクションでは、Chefサーバーのセットアップ時に生成されたRSA秘密鍵をワークステーションにコピーして、Chefサーバーとワークステーション間の通信を可能にします。

ワークステーションサーバーでRSAキーペアを生成します。このキーペアは、Chefサーバーにアクセスし、.pemファイルを転送するために使用されます。

root@ubuntubox2:~# ssh-keygen -b 4096
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:sR+Nloq6vsc7rX4ZmMInP3SKdk4fYEJH1iLoKNm1YMg [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|.. .  o.         |
|.E+ oo. .        |
| * o.o...        |
|+ o...   o +     |
|.  .. ooS = .    |
|    +o=oo+ .     |
|     Oo+oo.      |
|    ooO.+.       |
|   o=B=*.        |
+----[SHA256]-----+
root@ubuntubox2:~#

ワークステーションノードの公開鍵をChefサーバーノードにアップロードします。

root@ubuntubox2:~# ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

root@ubuntubox2:~#

scpコマンドを使用して、.pemファイルをChefサーバーからワークステーションにコピーします。

root@ubuntubox2:~# scp [email protected]:~/.chef/*.pem ~/chef-repo/.chef/
chefadmin.pem                                                                                                                         100% 1674    27.9KB/s   00:00
chef-on-ubuntu.pem                                                                                                                    100% 1674   496.8KB/s   00:00

.chefディレクトリの内容を一覧表示して、ファイルが正常にコピーされたことを確認します。 .pemファイルがリストされている必要があります。

root@ubuntubox2:~# ls ~/chef-repo/.chef
chefadmin.pem  chef-on-ubuntu.pem

新しいChefクックブックを生成します:

root@ubuntubox2:~# chef generate cookbook chef-first-cookbook
Hyphens are discouraged in cookbook names as they may cause problems with custom resources. See https://docs.chef.io/ctl_chef.html#chef-generate-cookbook for more information.
Generating cookbook chef-first-cookbook
- Ensuring correct cookbook file content
- Ensuring delivery configuration
- Ensuring correct delivery build cookbook content

Your cookbook is ready. Type `cd chef-first-cookbook` to enter it.

There are several commands you can run to get started locally developing and testing your cookbook.
Type `delivery local --help` to see a full list.

Why not start by writing a test? Tests for the default recipe are stored at:

test/integration/default/default_test.rb

If you'd prefer to dive right in, the default recipe can be found at:

recipes/default.rb

chef-repoを生成し、新しく作成されたディレクトリに移動します:

# chef generate app chef-repo
# cd chef-repo

ナイフの構成とクライアントノードのブートストラップ

〜/ chef-repo / .chefディレクトリに移動し、好みのテキストエディタを使用してconfig.rbという名前のファイルを作成して、knife構成ファイルを作成します。

次の構成をconfig.rbファイルにコピーします。


current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'node_name'
client_key               "USER.pem"
validation_client_name   'ORG_NAME-validator'
validation_key           "ORGANIZATION-validator.pem"
chef_server_url          'https://ubuntubox1.com/organizations/ORG_NAME'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path            ["#{current_dir}/../cookbooks"]

node_nameの値は、Chefサーバーで作成されたユーザー名である必要があります。
client_keyの下のUSER.pemを変更して、chefユーザーの.pemファイルを反映します。
validation_client_nameは、組織のORG_NAMEの後に-が続く必要があります。 validator。
valid_keyパスのORGANIZATION-validator.pemは、ORG_NAMEの後に-validator.pemを設定する必要があります。
最後に、chef_server_urlは、/ Organizations/ORG_NAMEが追加されたChefサーバーのドメインである必要があります。必ずORG_NAMEを組織の名前に置き換えてください。

chef-repoディレクトリに移動し、必要なSSL証明書をサーバーからコピーします。

root@ubuntubox2:~/chef-repo/.chef# cd ..
root@ubuntubox2:~/chef-repo# knife ssl fetch
WARNING: Certificates from ubuntubox1.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 ubuntubox1_com in /root/chef-repo/.chef/trusted_certs/ubuntubox1_com.crt

クライアントリストを実行して、config.rbが正しく設定されていることを確認します。このコマンドはバリデーター名を出力する必要があります。

root@ubuntubox2:~/chef-repo# knife client list
chef-on-ubuntu-validator

ノードをブートストラップすると、Chefクライアントがノードにインストールされ、ノードが検証されます。これにより、ノードはChefサーバーから読み取り、chef-clientによって検出された必要な構成更新をプルダウンして適用できます。
ワークステーションから、〜/ chef-repo/.chefディレクトリに移動します。

# cd ~/chef-repo/.chef

クライアントノードのrootユーザー、または昇格された権限を持つユーザーのいずれかを使用して、クライアントノードをブートストラップします。

root@ubuntubox2:~/chef-repo/.chef# knife bootstrap ubuntubox3.com -x root -P ******* --node-name chef-client-node
Creating new client for chef-client-node
Creating new node for chef-client-node
Connecting to ubuntubox3.com
ubuntubox3.com -----> Installing Chef Omnibus (-v 14)
ubuntubox3.com downloading https://omnitruck-direct.chef.io/chef/install.sh
ubuntubox3.com   to file /tmp/install.sh.2019/install.sh
ubuntubox3.com trying wget...
ubuntubox3.com ubuntu 18.04 x86_64
ubuntubox3.com Getting information for chef stable 14 for ubuntu...
ubuntubox3.com downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=14&p=ubuntu&pv=18.04&m=x86_64
ubuntubox3.com   to file /tmp/install.sh.2023/metadata.txt
ubuntubox3.com trying wget...
ubuntubox3.com sha1     ed9b1fcdaf947d9a3d60e6d196308183a082bcff
ubuntubox3.com sha256   9ddcd5ceef19c95ecc1f34bef080c23d9cb42ae8ebc69fd41dcf1c768a6a708f
ubuntubox3.com url      https://packages.chef.io/files/stable/chef/14.13.11/ubuntu/18.04/chef_14.13.11-1_amd64.deb
ubuntubox3.com version  14.13.11
ubuntubox3.com downloaded metadata file looks valid...
ubuntubox3.com downloading https://packages.chef.io/files/stable/chef/14.13.11/ubuntu/18.04/chef_14.13.11-1_amd64.deb
ubuntubox3.com   to file /tmp/install.sh.2023/chef_14.13.11-1_amd64.deb
ubuntubox3.com trying wget...
ubuntubox3.com Comparing checksum with sha256sum...
ubuntubox3.com Installing chef 14
ubuntubox3.com installing with dpkg...
ubuntubox3.com Selecting previously unselected package chef.
(Reading database ... 117468 files and directories currently installed.)
ubuntubox3.com Preparing to unpack .../chef_14.13.11-1_amd64.deb ...
ubuntubox3.com Unpacking chef (14.13.11-1) ...
ubuntubox3.com Setting up chef (14.13.11-1) ...
ubuntubox3.com Thank you for installing Chef Infra Client! For help getting started visit https://learn.chef.io
ubuntubox3.com Starting the first Chef Client run...
ubuntubox3.com Starting Chef Client, version 14.13.11
ubuntubox3.com resolving cookbooks for run list: []
ubuntubox3.com Synchronizing Cookbooks:
ubuntubox3.com Installing Cookbook Gems:
ubuntubox3.com Compiling Cookbooks...
ubuntubox3.com [2019-06-03T14:01:44+04:00] WARN: Node chef-client-node has an empty run list.
ubuntubox3.com Converging 0 resources
ubuntubox3.com
ubuntubox3.com Running handlers:
ubuntubox3.com Running handlers complete
ubuntubox3.com Chef Client finished, 0/0 resources updated in 05 seconds
Confirm that the node has been bootstrapped by listing the client nodes:
root@ubuntubox2:~/chef-repo/.chef# 

ノードを一覧表示して、ノードが正常にブートストラップされたことを確認します。

root@ubuntubox2:~/chef-repo/.chef# knife node list
chef-client-node
root@ubuntubox2:~/chef-repo/.chef# knife node show chef-client-node
Node Name:   chef-client-node
Environment: _default
FQDN:        ubuntubox3.com
IP:          192.168.1.107
Run List:
Roles:
Recipes:
Platform:    ubuntu 18.04
Tags:

結論

この詳細な記事では、Chef構成管理ツールについて、その基本的な理解と、インストールおよび構成設定を含むコンポーネントの概要について学習しました。 Chefの詳細については、ChefのWebサイト(https://www.chef.io/

)にアクセスしてください。
Ubuntu
  1. Ubuntu18.04LTSにNTPサーバーとクライアントをインストールする方法

  2. Ubuntu20.04にDHCPサーバーをインストールして構成する方法

  3. Ubuntu20.04にNFSクライアントとサーバーをインストールする方法

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ubuntu20.04にUrBackupサーバーとクライアントをインストールする-その方法は?

  3. Ubuntuにvncサーバーとクライアントをインストールします

  1. Ubuntu20.04にVNCをインストールして構成する方法

  2. Ubuntu18.04にVNCをインストールして構成する方法

  3. Ubuntu18.04にNFSサーバーをインストールして構成する方法