Я использую плагин Knife-vsphere для шеф-повара для взаимодействия с нашими хостами vsphere.
Как часть конфигурации для плагина knife-vsphere кажется, что вы должны ввести пароль в виде обычного текста, что, на мой взгляд, кажется неправильным.
Когда я настраивал пользователей в своем рецепте, я ранее вводил пароли через openssl passwd -1 "plainTextPassword"
чтобы получить значение хэша, и я установил это, поскольку я создаю пользователя, я не уверен, где это происходит, если он на узле или если он в ноже.
Кто-нибудь знает, можно ли использовать тот же метод хеширования (или что-то еще) для локального хранения моего пароля, чтобы я мог войти в vsphere, или мне нужно оставить его как обычный текст?
Мой текущий файл ножа rb представлен ниже:
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
это просто рубиновый файл, вы также можете прочитать пароль из переменной среды (которую вы должны установить один раз после запуска сеанса терминала):
knife[:vsphere_user]="User"
knife[:vsphere_pass]=ENV['VSPHERE_PASS']
Это будет читать VSPHERE_PASS
переменная, которую вы должны были установить с помощью
export VSPHERE_PASS=mypassword
Насколько мне известно из использования chef, нет другого способа сохранить его в зашифрованном виде на вашем компьютере (я имею в виду ... Chef все равно должен иметь возможность его расшифровать).