Chefは、インフラストラクチャをコードに変換する強力な構成管理ユーティリティです。 Chefを使用すると、ユーザーは、環境(クラウド、オンプレミス、またはハイブリッド)に関係なく、一元化された場所からネットワーク全体でリソースを簡単に管理、構成、および展開できます。この投稿は、CentOS 7 /RHEL7でシェフ12をセットアップするのに役立ちます
Chefサーバー11のリリース以降、ChefサーバーのフロントエンドはErlangで記述され、クライアントはRubyを使用して構成の変更を処理します。
Chefのコンポーネント:
Chefは、Chefサーバー、1つ以上のワークステーション、およびchef-clientがインストールされているノードで構成されます。コンポーネント名は、Chefエコシステム内の各マシンが果たす役割に基づいています。
シェフサーバー :これは、ワークステーションからアップロードされたクックブックとレシピを格納する中央ハブサーバーであり、構成の展開のためにchef-clientによってアクセスされます。
シェフのワークステーション :これは、レシピ、クックブック、およびその他のシェフ構成の詳細が作成または編集される場所です。これらはすべて、ワークステーションからChefサーバーにプッシュされ、Chef-clientノードにデプロイできるようになります。
シェフクライアント :これは、chef-clientがインストールされている構成がデプロイされているターゲットノードです。ノードには、任意のマシン(物理、仮想、クラウド、ネットワークデバイスなど)を使用できます。
CentOS 7でChef12をセットアップする:
システム要件/環境:
システムが次のリソース要件を満たしていることを確認してください。ここでは、Chefインストールの基本オペレーティングシステムとしてCentOS7を使用します。
ホスト名 | IPアドレス | OS | CPU | メモリ | DISK | 目的 |
---|---|---|---|---|---|---|
chefserver.itzgeek.local | 192.168.12.11 | CentOS 7 | 4 | 4 GB | 40 GB | シェフサーバー |
chefdk.itzgeek.local | 192.168.12.12 | CentOS 7 | 1 | 512 MB | NA | Chefワークステーション(Chef開発キット) |
chefclient.itzgeek.local | 192.168.12.20 | CentOS 7 | 1 | 512 MB | NA | シェフクライアント |
前提条件:
ホストには完全修飾ドメイン名が必要です。
DNSまたはホストエントリを配置する必要があります。
vi /etc/hosts 192.168.12.11 chefserver.itzgeek.local chefserver 192.168.12.12 chefdk.itzgeek.local chefdk 192.168.12.20 chefclient.itzgeek.local chefclient
wgetパッケージをインストールします。
yum -y install wget
Chefサーバー:
Chefサーバーは、構成データの中央ハブとして機能します。サーバーには、クックブック、ノードに適用されるポリシー、および登録されたノードに関連するメタデータが格納されます。登録済みノードは、chef-clientを使用して、レシピ、テンプレート、ファイル配布などの構成の詳細をChefServerに要求します。
Chefサーバーのインストールと構成:
Chefサーバーコアの最新バージョンをダウンロードします(執筆時点では12.10)。
wget https://packages.chef.io/stable/el/7/chef-server-core-12.10.0-1.el7.x86_64.rpm
ダウンロードが完了したら、次のコマンドを使用してchefサーバーコアをインストールします。
rpm -ivh chef-server-core-*.rpm
Chefサーバーシステムが推奨されるハードウェア要件を満たしていない場合、この手順は失敗する可能性があります。
インストールが完了したら、サーバーが連携して動作するように、chefサーバーコンポーネントを再構成する必要があります。 再構成には少し時間がかかる場合があります 。
chef-server-ctl reconfigure
次のコマンドを使用して、ChefServerコンポーネントのステータスを確認します。
chef-server-ctl status
出力:
run: bookshelf: (pid 6084) 387s; run: log: (pid 6114) 385s run: nginx: (pid 5973) 417s; run: log: (pid 6276) 359s run: oc_bifrost: (pid 5816) 477s; run: log: (pid 5831) 476s run: oc_id: (pid 5961) 420s; run: log: (pid 5966) 419s run: opscode-erchef: (pid 6186) 379s; run: log: (pid 6176) 381s run: opscode-expander: (pid 6039) 388s; run: log: (pid 6071) 388s run: opscode-solr4: (pid 5992) 399s; run: log: (pid 5999) 398s run: postgresql: (pid 5805) 478s; run: log: (pid 5809) 477s run: rabbitmq: (pid 5767) 480s; run: log: (pid 5760) 481s run: redis_lb: (pid 5377) 595s; run: log: (pid 6272) 359s
管理者ユーザーと組織を作成する:
管理者ユーザーを作成する必要があります。このユーザーは、作成する組織のインフラストラクチャコンポーネントに変更を加えるためのアクセス権を持ちます。以下のコマンドはRSA秘密鍵を自動的に生成するため、安全な場所に保存する必要があります。
ユーザーの詳細は以下のとおりです。
ユーザー名 :管理者
名 :管理者
姓 :管理者
メール :[email protected]
パスワード :パスワード
ファイル名 :admin.pem
パス :/ etc / chef
chef-server-ctl user-create admin admin admin [email protected] password -f /etc/chef/admin.pem
元のコマンド:
chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' -f PATH_FILE_NAME
シェフの構成を保持する組織を作成するときが来ました。
短い名前 :itzgeek(注:名前は小文字または数字で始まる必要があり、小文字、数字、ハイフン、アンダースコアを含めることができ、1〜255文字である必要があります )
完全な組織名 :ITzGeek Inc(注:空白以外の文字で始まり、1〜1023文字である必要があります )
アソシエーションユーザー :admin(注:このオプションは、以前に作成したユーザー( admin )を関連付けます )管理者と chefサーバーのセキュリティグループ )
ファイル名 :itzgeek-validator.pem(注:コマンドはRSA秘密鍵を自動的に生成するため、安全な場所に保存する必要があります )
パス :/ etc / chef
chef-server-ctl org-create itzgeek "ITzGeek, Inc" --association_user admin -f /etc/chef/itzgeek-validator.pem
元のコマンド:
chef-server-ctl org-create short_name 'full_organization_name' --association_user user_name --filename ORGANIZATION-validator.pem
現在、2つの .pemがあります / etc / chefのキー ディレクトリ。この場合、それらは admin.pemと呼ばれます およびitzgeek-validator.pem 。間もなく、これら2つのファイルをChefワークステーションマシンに配置します。
ファイアウォール:
Chefサーバーでは、ファイアウォールを介して次のポートを開く必要があります。ただし、有効にするのは80と443のみです
次のコマンドを実行して、80および443を許可します ファイアウォールを通過します。
firewall-cmd --permanent --zone public --add-service http firewall-cmd --permanent --zone public --add-service https firewall-cmd --reloadページ:1 2 3