2013-05-24 10 views
6

Po prostu zaczynam od lalek (i włóczęgów), aby skonfigurować środowisko programistyczne dla naszego zespołu, który składa się z 8 + programistów, z których każdy ma swoją konkretną konfigurację bash, itp. Mam zainstalowane całe oprogramowanie w systemie, aby szybko wdrożyć nowe wirtualne maszyny programistyczne, ale nie jestem pewien, jak najlepiej skonfigurować środowisko programistyczne dla każdego użytkownika w sposób zautomatyzowany (w końcu będziemy mieć kilka środowisk programistycznych i wygodnie byłoby pisać to raz i gotowe).Jak skonfigurować niestandardowe środowisko bash dla różnych użytkowników za pomocą lalek?

Na przykład chciałbym ustawić użytkownika joe, sklonować repozytorium konfiguracji Joe'a z github, a następnie uruchomić skrypt w tym repozytorium github, aby skonfigurować środowisko dla Joe. Jakieś sugestie, jak to zrobić dla Joe, a także Jimmy'ego, Jamesa, Julie, Jane, Jake'a, Jake'a i Jimbo?

W przypadku jakiejkolwiek pomocy, maszyny programistyczne prawie na pewno będą systemami ubuntu.

Odpowiedz

3

Oprócz sugestii @ Matta, utworzyłem custom puppet module, który tworzy instancję środowiska konfiguracyjnego dla każdej osoby na podstawie ich preferencji github. Uzyskany moduł lalek users wygląda mniej więcej tak:

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 

Odpowiedni smakołyk jest w plikach instalacji niestandardowej dla każdego użytkownika. Na przykład, oto co jim.pp może wyglądać następująco:

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

Możesz użyć faktów z lalkami w pliku vagranta, aby ustawić nazwę użytkownika i przekazać ją do swoich manifestów lalkowych. Coś jak następuje:

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

To minie obecna zalogowany nazwę użytkownika aż do lalek, a następnie w ciągu swoich oczywistych plików można użyć zmiennej "$user_name" obrębie git polecenia do kasy repo poprawne użytkowników i zrobić wszelkie inne pokrewne zadania.

+0

To jest dobre dla konkretnego użytkownika rozwijającego się na własnej stacji roboczej. Byłoby miło, gdyby zajął się również budowaniem środowisk użytkowników dla * wszystkich * użytkowników na zdalnych komputerach. – dino

+0

Zaktualizowałem tę odpowiedź, aby uwzględnić potrzebne znaki "" do użycia zmiennej "$ user_name". Więcej informacji można znaleźć pod adresem http://stackoverflow.com/q/34345939/328275. – axiopisty

Powiązane problemy