LoginSignup
0
0

More than 5 years have passed since last update.

ChefTips: Chef Serverバックアップ・リストア時の考慮点

Posted at

概要

以下の記事で、Chef Serverのバックアップ・リストアについてご紹介しました。

ChefTips: Chef Serverのバックアップについて
ChefTips: Chef Serverのリストアについて

Chef Server を 自己証明書で運用しており、Chef Server リストア後、WorkstationとNodeがChefServerに接続できなくなる事象が発生した場合の考慮点についてご紹介します。

発生する事象

Chef Serverリストア後、Workstationからknifeコマンドを使用した場合、以下のようなエラーがでます。

$ knife node list
ERROR: SSL Validation failure connecting to host: sjkcent01.chef.local - SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate)
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://sjkcent01.chef.local/organizations/test/nodes - SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate)

Chef Serverリストア後、Nodeから chef-clientコマンドを使用した場合、以下のようなエラーがでます。

Unexpected Error:
-----------------
OpenSSL::SSL::SSLError: SSL Error connecting to https://sjkcent01.chef.local/organizations/test/nodes/sjkcent02 - SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate)

事象が発生する原因

trusted_certs として Workstation、Nodeに保管している Chef Serverの証明書 と、Chef Serverが実際に使用している自己証明書が不整合を起こしているために発生します。

どうやら、chef-server-ctl backup chef-server-ctl restore コマンドは、Chef Server同梱のNginxが利用しているSSL証明書はバックアップ・リストアしてくれないようです。そのため、chef server-ctl restore後のchef-server-ctl reconfigureで自己証明書が再作成されてしまい、不整合が発生します。

ちゃんとしたCAから発行されるSSL証明書同様、自分で管理しておいてね、ということのようですね。(公式マニュアルにその記述はないのは不親切ですが…)

自己証明書のデフォルトの保管場所

Chef Server:

$ pwd
/var/opt/opscode/nginx/ca
$ ls -l
-rw-------. 1 opscode opscode 1489 Oct 22 05:10 sjkcent01.chef.local.crt

Chef Workstation:

$ pwd
(Chefレポのパス)/.chef/trusted_certs
$ ls -l
-rw-r--r--. 1 root root 1489 Oct 22 21:10 sjkcent01_chef_local.crt

Chef Node:

$ pwd
/etc/chef/trusted_certs
$ ls -l
-rw-r--r--. 1 root root 1489 Oct 22 21:14 sjkcent01_chef_local.crt

対応策

Chef Workstaion では、Chef Workstaionの初期設定時同様、knife ssl fetch で解消できます。
Chef Client では、以下のいずれかの方法で対応が可能です。

1. 全Chef Nodeで fetch処理実施

全Chef Nodeで Workstaion同様、knife ssl fetch する方法です。
Workstaionから以下コマンドで、全Chef Nodeに対して爆撃可能です。

$ knife ssh 'name:*' 'sudo knife ssl fetch -c /etc/chef/client.rb'

2. 予め自己証明書もバックアップしておく

Chef Server側でchef-server-ctl backupする際に、合わせて /var/opt/opscode/nginx/ca配下の自己証明書もバックアップをしておく方法です。
chef-server-ctl restore後、そのバックアップしておいた自己証明書を既定の場所に保存してください。

3. 予めChef NodeのSSL検証を無効化しておく

Chef Client が Chef Server に接続する際のSSL検証を無効化する設定も可能です。
Chef Client 側の設定ファイル /etc/chef/client.rb に 以下一行を追加してください。

ssl_verify_mode :verify_none
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0