首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用puppet为不同的用户设置自定义bash环境?

如何使用puppet为不同的用户设置自定义bash环境?
EN

Stack Overflow用户
提问于 2013-05-24 18:15:00
回答 2查看 540关注 0票数 6

我刚刚开始使用puppet (和vagrant)为我们的团队设置开发环境,该团队由8+开发人员组成,每个开发人员都有自己特定的bash配置,等等。我已经在系统上安装了所有软件,以便快速部署新的开发虚拟机,但我不确定以自动方式为每个特定用户设置开发环境的最佳方式(我们最终将有几个开发环境,编写一次就可以很方便地完成)。

例如,我想要设置一个用户joe,从github克隆Joe的配置存储库,然后在该github存储库中运行一个脚本来为Joe设置环境。对于如何为Joe以及Jimmy、James、Julie、Jane、Jim、Jake和Jim做这件事,有什么建议吗?

如果有任何帮助,开发机器几乎肯定是ubuntu系统。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-14 21:40:52

除了@Matt的建议之外,我还创建了一个custom puppet module,它根据每个人的github偏好为每个人实例化配置环境。生成的木偶模块users如下所示:

代码语言:javascript
复制
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可能的样子:

代码语言:javascript
复制
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'],
  }
}
票数 3
EN

Stack Overflow用户

发布于 2013-05-24 19:31:51

您可以使用vagrant文件中的傀儡事实来设置用户名,并将其传递给您的傀儡清单。类似于以下内容:

代码语言:javascript
复制
Vagrant.configure("2") do |config|
  config.vm.provision :puppet do |puppet|
    puppet.facter = {
      "user_name" => ENV['USER']
    }
  end
end

这将把当前登录的用户名传递给puppet,然后在您的清单文件中,您可以在git命令中使用变量"$user_name"来检查正确的用户存储库,并执行任何其他相关任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16732644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档