我刚刚开始使用puppet(和vagrant)为我们的团队设置开发环境,该团队由8位以上的开发人员组成,每个开发人员都有自己特定的bash配置等等。我已经拥有了所有的软件安装在系统上以快速部署新的开发虚拟机,但我不确定以自动方式为每个特定用户设置开发环境的最佳方式(我们最终将拥有多个开发环境,这将是方便的写一次并完成)。
例如,我想设置一个用户joe
,从github克隆Joe的配置存储库,然后在该github存储库中运行一个脚本来为Joe设置环境。关于Joe以及Jimmy,James,Julie,Jane,Jim,Jake和Jimbo如何做到这一点的任何建议?
如果有任何帮助,开发机器几乎肯定是ubuntu系统。
答案 0 :(得分:3)
除了@Matt的建议,我创建了一个custom puppet module,它根据每个人的github首选项实例化配置环境。生成的木偶模块users
看起来像这样:
users/
├── manifests
│ ├── init.pp # base level configurations for all users
│ ├── jake.pp # custom setup for jake
│ ├── james.pp # custom setup for james
│ ├── jane.pp # custom setup for jane
│ ├── jim.pp # custom setup for jim
│ ├── jimbo.pp # custom setup for joe
│ ├── jimmy.pp # custom setup for jimmy
│ ├── joe.pp # custom setup for julie
│ └── julie.pp # custom setup for jimbo
└── templates
相关的花絮在每个用户的自定义设置文件中。例如,jim.pp
可能是这样的:
class users::jim {
# make sure that all base configuration in init.pp is set up first
require users
# add the user here
user { 'jim':
# comment => 'Dean Malmgren',
home => '/home/jim',
shell => '/bin/bash',
uid => 201,
managehome => 'true',
groups => ['sudo', 'vagrant'],
provider => 'useradd',
password => '$6$kxHLEuHW$78m3zHVLu0XUUDaU4bT.PEg./FfcloJiWml',
}
# clone the repository the first time
exec { 'jim-clone-dotfiles':
command => 'git clone git://github.com/jim/dotfiles.git && python dotfiles/create_softlinks.py',
cwd => '/home/jim',
creates => '/home/jim/dotfiles',
user => 'jim',
group => 'jim',
require => [ Package['git'] ],
}
# fetch and update if jim decides to update his dotfiles repo
exec { 'jim-update-dotfiles':
command => 'git merge --ff-only origin/master && python create_softlinks.py',
cwd => '/home/jim/dotfiles',
unless => 'git fetch && git diff --exit-code origin/master',
user => 'jim',
group => 'jim',
require => Exec['jim-clone-dotfiles'],
}
}
答案 1 :(得分:2)
您可以在vagrant文件中使用puppet事实来设置用户名并将其传递给您的puppet清单。如下所示:
Vagrant.configure("2") do |config|
config.vm.provision :puppet do |puppet|
puppet.facter = {
"user_name" => ENV['USER']
}
end
end
这会将当前登录的用户名传递给puppet,然后在您的清单文件中,您可以使用git命令中的变量"$user_name"
来检查正确的用户repo并执行任何其他相关任务。