6

私は、パペット (および vagrant) を使い始めて、チームの開発環境をセットアップしました。このチームは、8 人以上の開発者で構成され、それぞれが特定の bash 構成などを持っています。すべてのソフトウェアがインストールされています。新しい開発仮想マシンを迅速に展開するためのシステムですが、特定のユーザーごとに自動化された方法で開発環境をセットアップする最良の方法はわかりません (最終的に複数の開発環境を持つことになるため、これを一度書くと便利です)そして完了します)。

たとえば、ユーザーをセットアップし、joeJoe の構成リポジトリを github から複製し、その github リポジトリでスクリプトを実行して Joe の環境をセットアップしたいと考えています。ジョーだけでなく、ジミー、ジェームズ、ジュリー、ジェーン、ジム、ジェイク、ジンボに対してこれを行う方法について何か提案はありますか?

助けがあれば、開発マシンはほぼ確実にubuntuシステムになります。

4

2 に答える 2

3

@Matt の提案に加えて、github の設定に基づいて各個人の構成環境をインスタンス化するカスタム puppet モジュールを作成しました。結果の puppet モジュール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'],
  }
}
于 2013-06-14T13:40:52.213 に答える
2

vagrant ファイルで puppet ファクトを使用してユーザー名を設定し、これを puppet マニフェストに渡すことができます。次のようなもの:

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

これにより、現在ログインしているユーザー名が puppet に渡され、マニフェスト ファイル"$user_name"内で git コマンド内の変数を使用して、正しいユーザー リポジトリをチェックアウトし、その他の関連タスクを実行できます。

于 2013-05-24T11:31:51.090 に答える