問題
Chef の Server/WorkStation/Node 構成では、WrokStation や Node から Server に https 接続が必要。
この https 接続を ssh ポートフォワーディングにより対応する設定例。
前提
ローカルのrootユーザーから踏み台サーバにssh接続可能
ローカルの127.0.0.1:443が使用されていない
環境
ローカル(Chef WorkStation)
vagrant bento/centos-7 201807.12.0 CentOS Linux release 7.5.1804 (Core)
Chef Development Kit Version: 3.1.0
ssh踏台サーバの先にChefサーバ
対応
sshポートフォワーディング(ローカルフォワード)
sshポートフォワーディング(ローカルフォワード)により、ローカルのhttps(127.0.0.1:443)への接続を、ssh踏台経由で、Chef Serverの443(https)に接続する。
$ sudo ssh -f -N -L 443:<踏台サーバからアクセス可能なChefServerアドレス>:443 <踏台サーバーのユーザ>@<踏台サーバのアドレス>
1023番以下の特権ポートに対するフォワーディングの為、root権限が必要。
必要に応じて-o StrictHostKeyChecking=no、もしくは多段sshの場合、~/.ssh/configなどで各段に StrictHostKeyChecking noを付与。
Chefサーバのホスト名をローカルアドレスに対応させる
$ sudo 'echo 127.0.0.1 <Chef Serverのhost名> >> /etc/hosts'
knife.rb
node_name '<Chef User>'
client_key '<Chef User>.pem'
chef_server_url 'https://<Chef Serverのhost名>/organizations/<Chef Organization>'
cookbook_path ["cookbooks"]
...
<Chef Serverのhost名>箇所に、127.0.0.1や127.0.0.1に対応させた他の値を指定した場合、動作が確認できていない。
最後に:nnnnといった様にポートを指定した場合、動作が確認できていない。
注意
若干無理な設定を行なっているので、使用環境で実現可能かは十分に考慮/検証が必要。
- ローカルの特権ポートからのフォワーディング
- 127.0.0.1にChefサーバーのhost名を割り振る