2013-05-24 10 views
6

私はちょうど私たちのチームのための開発環境をセットアップするための人形(そして迷彩)から始めています。私たちのチームは8人以上の開発者で構成されていて、それぞれは特定のbash設定を持っています。システム上で新しい開発用仮想マシンを迅速に展開することはできますが、特定の各ユーザーの開発環境を自動化するための最良の方法はわかりません(いくつかの開発環境が完成するでしょう。これは一度やります)。人形でさまざまなユーザーのためのカスタムbash環境を設定する方法は?

たとえば、ユーザーjoeを設定し、Joeの設定リポジトリをgithubからクローンしてから、そのgithubリポジトリでJoeの環境を設定するスクリプトを実行します。 JoeとJimmy、James、Julie、Jane、Jim、Jake、Jimboのためにこれを行う方法の提案はありますか?

その場合、開発マシンはほぼ確実にubuntuシステムになります。

答えて

3

@ Mattの提案に加えて、自分のgithubの設定に基づいて各個人の設定環境をインスタンス化するcustom puppet moduleを作成しました。結果として人形モジュール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'], 
    } 
} 
2

迷惑メールファイルの人形ファクトを使用してユーザー名を設定し、これをあなたの人形マニフェストに渡すことができます。以下のような何か:

Vagrant.configure("2") do |config| 
    config.vm.provision :puppet do |puppet| 
    puppet.facter = { 
     "user_name" => ENV['USER'] 
    } 
    end 
end 

これは人形に至るまでのユーザー名で、現在のログに記録されたを通過すると、あなたのマニフェストファイル内に正しいユーザーレポをチェックアウトして、他の関連を行うには、あなたのgitコマンド内の変数"$user_name"を使用することができますタスク。

+0

これは、自分のワークステーション上で開発し、特定のユーザーに最適です。リモートマシン上のすべての*ユーザーのためのユーザー環境の構築にも取り組んでいればうれしいでしょう。 – dino

+0

この答えを更新して、 '$ user_name'変数の使い方に必要な' 'マークを含めてください。詳細はhttp://stackoverflow.com/q/34345939/328275を参照してください。 – axiopisty

関連する問題