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