Наша среда разработки включает в себя локальные виртуальные машины, которые запускают запросы к более крупным общим ресурсам в облаке.Test Kitchen - Как я могу пройти локальный вход пользователя в качестве атрибута Chef?
Он был настроен таким образом, что логин локального пользователя будет передан в роль шеф-повара как атрибут, который используется для определения соединений SSH и DB.
В настоящее время мы используем Ruby в Vagrantfile, чтобы вырвать логин и vm.provision для создания файла/tmp в файловой системе гостевой виртуальной машины. Наша роль шеф-повара для локальных виртуальных машин считывает содержимое этого файла и передает значение в атрибут.
Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
(snip)
require 'etc'
user = Etc.getlogin
(snip)
analytics.vm.provision :shell, inline: "echo #{user} > /tmp/remote_user"
Во время выполнения шеф-повара, содержимое/TMP/REMOTE_USER читаются следующим образом:
remote_user = File.open("/tmp/remote_user", "r").read.strip
sandbox = "_#{remote_user}"
default_attributes "remote_user" => remote_user,
"sandbox" => sandbox,
Есть ли лучший способ, чтобы добавить логин текущего пользователя, как атрибут для местного шеф-повара?
Если нет, то как я могу воспроизвести функциональность, которая была у меня в нашем старом Vagrantfile, в .kitchen.yml?
В качестве альтернативы, вы можете сделать атрибуты: Foo: <% = 'whoami'%> , чтобы перейти непосредственно к имени пользователя. –