シェフがvSphereホストと対話するためにknife-vsphereプラグインを使用しています。
ナイフ-vSphereプラグインの構成の一部として、プレーンテキストのパスワードを入力する必要があるようですが、これは間違っているようです。
レシピ内でユーザーを設定するとき、以前にopenssl passwd -1 "plainTextPassword"
を介してパスワードを実行してハッシュ値を取得し、これをユーザーの作成時に設定しました。これがオンになっている場合、どこで発生するかわかりません。ノードまたはそれがナイフにある場合。
同じハッシュメソッド(または他の方法)を使用してパスワードをローカルに保存し、vSphereにログインできるかどうか、またはプレーンテキストのままにする必要があるかどうかを誰かが知っていますか?
私の現在のkniferbファイルを以下に示します。
log_level :info
log_location STDOUT
node_name 'a-user'
client_key 'C:/Users/user/.chef/a-user.pem'
validation_client_name 'chef-validator'
validation_key 'C:/Users/user/.chef/chef-validator.pem'
chef_server_url 'https://ourChefHost01:443'
syntax_check_cache_path 'C:/Users/user/.chef/syntax_check_cache'
cookbook_path [ 'C:/Work/chef/chef-repo/cookbooks' ]
ssl_verify_mode :verify_peer
knife[:vsphere_Host]="VHost"
knife[:vsphere_user]="User"
knife[:vsphere_pass]="IWantThisToBeAHashIfPossiblePlease_ThanksInAdvance!"
knife[:vsphere_dc]="Region_1"
knife[:vsphere_insecure]=false
元の値を取得できないため、後でそのハッシュを使用してログインするためにパスワードをハッシュすることはできません(ハッシュは一方向性関数です)。あなたが探しているのは暗号化です。
knife.rb
は単なるRubyファイルであるため、環境変数からパスワードを読み取ることもできます(ターミナルセッションの開始後に一度設定する必要があります)。
knife[:vsphere_user]="User"
knife[:vsphere_pass]=ENV['VSPHERE_PASS']
これにより、設定する必要のあるVSPHERE_PASS
変数が読み取られます。
export VSPHERE_PASS=mypassword
Chefを使用した私の知る限り、暗号化してマシンに保存する方法は他にありません(つまり、Chefはそれを復号化できる必要があります)。