
рд╣рд╛рдп, Habrausers! рдЖрдЬ рдореИрдВ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдХреБрдХрдмреБрдХ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ? рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдкреИрдорд╛рдирд╛ рдмрдврд╝рддрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдХреАрдЬрд╝ рдкрд░ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкреНрд░рд╢реНрди рдПрдЬреЗрдВрдбреЗ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдЦрд╛рджреНрдп рдкрджрд╛рд░реНрде, рд░рд╕реЛрдЗрдпреЗ, рдорд┐рдирд┐рдЯреЗрд╕реНрдЯ, рдЯреЗрд╕реНрдЯ рдХрд┐рдЪрди рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг ... рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ "рдЧреМрд░рд╡рд╢рд╛рд▓реА 21 рджрд┐рдиреЛрдВ" рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд░рд╕реЛрдИ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд░рд╕реЛрдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдЪрдп рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпреЛрдирд┐, рд╡рд░реНрдЬрд┐рди, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд░рд╕реЛрдИред
рдПрдХ рдХрд╛рдордХрд╛рдЬреА OS рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ 7 x64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдХреНрдпреЛрдВ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди рдерд╛ред
рдореБрдЭреЗ 3 рдШрдВрдЯреЗ рд▓рдЧреЗред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рд╕рднреА рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдзрд╛ рджрд┐рди рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рддреЛ, рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВ:
рдХрджрдо 1. рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рддреИрдпрд╛рд░реА
рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдФрд░ рд╡реИрдЧреНрд░рдВрдЯ
рдкрд╣рд▓реЗ рд╣рдореЗрдВ
рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдФрд░
рдЖрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдпреЛрдирд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд░реАрдмреВрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд░рд┐рдмреВрдЯ рдХреЗ рдмрд╛рдж, рд╣рдо рдпреЛрдирд┐ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:
1. рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ:
mkdir C:\vagrant && cd C:\vagrant
2. рд╕рдЯреАрдХ 32 рдмреЙрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ:C:\vagrant>vagrant box add precise32 files.vagrantup.com/precise32.box
Downloading box from URL: files.vagrantup.com/precise32.box
Extracting box...ate: 3089k/s, Estimated time remaining: --:--:--)
Successfully added box 'precise32' with provider 'virtualbox'!
3. рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрдорд╛рдВрдб Vagrantfile рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдЧреА:
C:\vagrant>vagrant init
4. Vagrantfile рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
-- config.vm.box = "base"
++ config.vm.box = "precise32"
5. рдЕрдм рд╣рдо рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ:
C:\vagrant>vagrant up
6. рдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ: 2222:login as: vagrant
vagrant@localhost's password: vagrant
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
* Documentation: help.ubuntu.com
Welcome to your Vagrant-built virtual machine.
рдпрджрд┐ рдЖрдк рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд░реВрдмреА рдФрд░ рд░реВрдмреА рджреЗрд╡рдХреАрдЯ
рдЕрдм рдЖрдкрдХреЛ
рдорд╛рдгрд┐рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢реЗрдлрд╝-рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдордгрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди,
"рдЕрдкрдиреЗ рдкреИрда рдХреЗ рд▓рд┐рдП рд░реВрдмреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЬреЛрдбрд╝реЗрдВ" рдЖрдЗрдЯрдо рдХреА
рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд░реВрдмреА рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ DevKit рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ (рд╕рдВрдХрд▓рдХ, рдкреБрд╕реНрддрдХрд╛рд▓рдп - рдПрдХ рд╢рдмреНрдж рдореЗрдВ, рджреЗрд╡рдХрд┐рдд) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдорд╛рдгрд┐рдХ рдФрд░ рджреЗрд╡рдХреАрдЯ) рджреЛрдиреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
1. рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ:mkdir C:\devkit && cd C:\devkit
2. рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░реЗрдВ: 3. рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ:C:\devkit>ruby dk.rb init
[INFO] found RubyInstaller v1.9.3 at C:/Ruby193
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рд░реВрдмреА рдХрд╛ рдорд╛рд░реНрдЧ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
4. рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
C:\DevKit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/Ruby193'
[INFO] Installing 'C:/Ruby193/lib/ruby/site_ruby/devkit.rb'
рд░реВрдмреА dk.rb рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, DevKit рдХреЗ рдкрде рдХреЛ PATH рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖ:
C:\DevKit>echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Ruby193\bin
рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ PATH рдореЗрдВ DevKit рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
1. рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ
setx PATH "C:\DevKit\mingw\bin\;C:\DevKit\bin\"
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, PATH рдЪрд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛;
2. рд╣рдо рдкреНрд░рд╢рд╛рд╕рдХ рдХреА рдУрд░ рд╕реЗ cmd рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
setx PATH "%PATH%;C:\DevKit\mingw\bin\;C:\DevKit\bin\" /M
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрдердХ рдХреЛ рдкрд╛рде рд╕рд┐рд╕реНрдЯрдо рдЪрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
3. рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рджреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:
> > > .
рдкрде рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ C: \ DevKit \ bin \ рдФрд░ C: \ DevKit \ mingw \ bin \ рдЬреЛрдбрд╝реЗрдВ
рдПрдХ рдирдпрд╛ рдЯрд░реНрдорд┐рдирд▓ (cmd) рдЦреЛрд▓реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ:
C:\Users\cc>echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Ruby193\bin;C:\DevKit\mingw\bin\;C:\DevKit\bin\
рдХрджрдо 2. рдкрд░реАрдХреНрд╖рдг рд░рд╕реЛрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдкрд░реАрдХреНрд╖рдг рд░рд╕реЛрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
1. рдкрд░реАрдХреНрд╖рдг рд░рд╕реЛрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ:
C:\>mkdir C:\kitchen && cd C:\kitchen
2. рдмрдВрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
C:\DevKit>gem install bundler
Fetching: bundler-1.5.2.gem (100%)
Successfully installed bundler-1.5.2
1 gem installed
Installing ri documentation for bundler-1.5.2...
Installing RDoc documentation for bundler-1.5.2...
3. рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдордгрд┐ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
source 'https://rubygems.org'
gem 'berkshelf', '~> 2.0.0' # use for manage cookbook dependencies
gem 'chef', '~> 11.6.0'
gem 'chef-zero'
gem 'json', '1.7.7' # needed for conflict resolution
gem 'kitchen-vagrant'
gem 'test-kitchen'
4. рд╕реНрдерд╛рдкрдирд╛ рдЪрд▓рд╛рдПрдБ:C:\kitchen>bundle install
Fetching gem metadata from rubygems.org.......
Fetching additional metadata from rubygems.org..
Resolving dependencies...
Installing i18n (0.6.9)
Installing multi_json (1.8.4)
Installing activesupport (3.2.16)
...
Installing test-kitchen (1.0.0)
Installing kitchen-vagrant (0.11.3)
Using bundler (1.5.2)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
5. рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм (рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Sendmail рд▓рд┐рдпрд╛):
mkdir C:\kitchen\cookbooks && cd C:\kitchen\cookbooks && knife cookbook site download sendmail
7. рдкрд░реАрдХреНрд╖рдг рдХрд┐рдЪрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ:
C:\kitchen>kitchen init
create .kitchen.yml
create test/integration/default
create .gitignore
append .gitignore
append .gitignore
8. рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо .kitchen.yml рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ:---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true
platforms:
- name: ubuntu-12.04
driver_config:
box: opscode-ubuntu-12.04
box_url: opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box
suites:
- name: default
run_list: ["recipe[sendmail]"]
attributes: {}
9. рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ:
C:\kitchen>kitchen test
.....................
тЖР[0m[2014-01-11T10:17:15+00:00] INFO: *** Chef 11.8.2 ***тЖР[36m
тЖР[0m[2014-01-11T10:17:15+00:00] INFO: Chef-client pid: 1169тЖР[36m
тЖР[0m[2014-01-11T10:17:16+00:00] INFO: Setting the run_list to ["recipe[sendmail]"] from JSONтЖР[36m
тЖР[0m[2014-01-11T10:17:16+00:00] INFO: Run List is [recipe[sendmail]]тЖР[36m
тЖР[0m[2014-01-11T10:17:16+00:00] INFO: Run List expands to [sendmail]тЖР[36m
тЖР[0m[2014-01-11T10:17:16+00:00] INFO: Starting Chef Run for default-ubuntu-1204тЖР[36m
тЖР[0m[2014-01-11T10:17:16+00:00] INFO: Running start handlersтЖР[36m
тЖР[0m[2014-01-11T10:17:16+00:00] INFO: Start handlers complete.тЖР[36m
тЖР[0mCompiling Cookbooks...тЖР[0mтЖР[36m
тЖР[0mConverging 2 resourcesтЖР[0mтЖР[36m
тЖР[0mRecipe: sendmail::defaultтЖР[0mтЖР[36m
тЖР[0m * package[sendmail] action installтЖР[0m[2014-01-11T10:17:16+00:00] INFO: Processing package[sendmail] action install(sendmail::default line 1)тЖР[36m
тЖР[0mтЖР[32mтЖР[36m
тЖР[0m - install version 8.14.4-2ubuntu2 of package sendmailтЖР[0mтЖР[36m
тЖР[0mтЖР[0mтЖР[36m
тЖР[0m * service[sendmail] action enableтЖР[0m[2014-01-11T10:17:27+00:00] INFO: Processing service[sendmail] action enable (sendmail::default line 6)тЖР[36m
тЖР[0m[2014-01-11T10:17:27+00:00] INFO: service[sendmail] enabledтЖР[36m
тЖР[0mтЖР[32mтЖР[36m
тЖР[0m - enable service service[sendmail]тЖР[0mтЖР[36m
тЖР[0mтЖР[0mтЖР[36m
тЖР[0m * service[sendmail] action startтЖР[0m[2014-01-11T10:17:27+00:00] INFO: Processing service[sendmail] action start (sendmail::default line 6)тЖР[36m
тЖР[0m (up to date)тЖР[0mтЖР[36m
тЖР[0m[2014-01-11T10:17:27+00:00] INFO: Chef Run complete in 11.695990777 secondsтЖР[36m
тЖР[0m[2014-01-11T10:17:27+00:00] INFO: Running report handlersтЖР[36m
тЖР[0m[2014-01-11T10:17:27+00:00] INFO: Report handlers completeтЖР[36m
тЖР[0mChef Client finished, 2 resources updatedтЖР[0mтЖР[36m
тЖР[0mтЖР[36m Finished converging <default-ubuntu-1204> (0m29.54s).
тЖР[0mтЖР[36m-----> Setting up <default-ubuntu-1204>
тЖР[0mтЖР[36m Finished setting up <default-ubuntu-1204> (0m0.00s).
тЖР[0mтЖР[36m-----> Verifying <default-ubuntu-1204>
тЖР[0mтЖР[36m Finished verifying <default-ubuntu-1204> (0m0.00s).
тЖР[0mтЖР[36m-----> Destroying <default-ubuntu-1204>
тЖР[0mтЖР[36m [kitchen::driver::vagrant command] BEGIN (vagrant destroy -f)
тЖР[0mтЖР[36m [default] Forcing shutdown of VM...
тЖР[0mтЖР[36m [default] Destroying VM and associated drives...
тЖР[0mтЖР[36m [kitchen::driver::vagrant command] END (0m0.00s)
тЖР[0mтЖР[36m Vagrant instance <default-ubuntu-1204> destroyed.
тЖР[0mтЖР[36m Finished destroying <default-ubuntu-1204> (0m4.85s).
тЖР[0mтЖР[36m Finished testing <default-ubuntu-1204> (1m16.33s).
тЖР[0m-----> Kitchen is finished. (1m16.69s)
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╢реЗрдл-рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рд╕реЗрдВрдбрдореЗрд▓ рдкреИрдХреЗрдЬ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдлрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдЙрджрд╛рд╣рд░рдг рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдЪрд▓рдиреЗ рдореЗрдВ рдкреАрдЫреЗ рд░рд╣рддрд╛ рд╣реИред
рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рднреАрддрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХреЗрдВред
STEP 3. рдмрд░реНрдХрд╢реЗрд▓рдл
рдХреБрдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмрд░реНрдХрд╢реЗрд▓рдл рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ - рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:
1. рдЖрд╡рд╛рд░рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
C:\kitchen>vagrant plugin install vagrant-berkshelf
Installing the 'vagrant-berkshelf' plugin. This can take a few minutes...
Installed the plugin 'vagrant-berkshelf (1.3.7)'!
2. рд╢реЗрдл-рдХреБрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:
C:\kitchen>berks init chef-cook
create chef-cook/Berksfile
create chef-cook/Thorfile
create chef-cook/.gitignore
run git init from "./chef-cook"
C:/Ruby193/bin/berks: No such file or directory - git init
create chef-cook/Gemfile
create .kitchen.yml
append Thorfile
create test/integration/default
append Gemfile
append Gemfile
You must run `bundle install' to fetch any new gems.
create chef-cook/Vagrantfile
Successfully initialized
3. рд╕реНрдерд╛рдкрдирд╛ рдЪрд▓рд╛рдПрдБ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдордгрд┐ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ):cd C:\kitchen\chef-cook && bundle install
4. рдПрдХ рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм рдмрдирд╛рдПрдБ:
mkdir C:\kitchen\chef-cook\cookbooks && cd C:\kitchen\chef-cook\cookbooks && berks cookbook mytest
5. рд╣рдорд╛рд░реЗ рдиреБрд╕реНрдЦрд╛ рдХреЛ рдЪрд▓рд╛рдПрдБ-рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред kitchen.yml:
C:\kitchen\chef-cook\.kitchen.yml
---
suites:
- name: default
run_list: ["recipe[mytest]"]
attributes: {}
6. рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ:C:\kitchen\chef-cook>kitchen test
рдФрд░ рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
ERROR: Cookbook mytest not found. If you're loading mytest from another cookbook, make sure you configure the dependency in your metadata
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдХреЛ рдмрд░реНрдХрд╕рдлрд╛рдЗрд▓ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
cookbook 'mytest', :path => 'cookbooks/mytest'
рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЬрд╣рд╛рдВ рдмрд░реНрдХрд╢реЗрд▓ рджрд┐рдП рдЧрдП рдХреБрдХреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдХрд░ рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд╖рдХред
1. рдиреБрд╕реНрдЦрд╛ C: \ kitchen \ chef-cook \ mytest \ default.rb рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:include_recipe 'sendmail'
2. рдФрд░ рд╕реА рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рднреА рдЬреЛрдбрд╝реЗрдВ: \ рд░рд╕реЛрдИ \ рд░рд╕реЛрдЗрдпрд╛-рдЦрд╛рдирд╛ рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП \ mytest \ metadata.rb:
depends 'sendmail'
3. рдФрд░ рдЕрдВрдд рдореЗрдВ, рдлрд┐рд░ рд╕реЗ рд╣рдо рдмрд░реНрдХрд╕реЗрдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ:
site :opscode
cookbook 'sendmail'
cookbook 'mytest', :path => 'cookbooks/mytest'
рдпрд╛рдиреА рд╣рдордиреЗ "рдХреБрдХрдмреБрдХ 'рд╕реЗрдВрдбрдореЗрд▓' рдХреЛ рдЬреЛрдбрд╝рд╛," рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдмрд░реНрдХрд╢реЗрд▓ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реЗрдВрдбрдореЗрд▓ рдХреБрдХрдмреБрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
4. рд╣рдорд╛рд░реЗ рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм рдХреЗ рдХрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:C:\kitchen\chef-cook>kitchen conerge
....
тЖР[0mтЖР[36m Resolving cookbook dependencies with Berkshelf...
тЖР[0mInstalling sendmail (0.1.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'
Using mytest (0.1.0) at './cookbooks/mytest'
....
тЖР[0m * package[sendmail] action installтЖР[0m[2014-01-15T08:00:44+00:00] INFO: Processing package[sendmail] action install (sendmail::default line 1)тЖР[
....
тЖР[0mChef Client finished, 2 resources updatedтЖР[0mтЖР[36m
тЖР[0mтЖР[36m Finished converging <default-ubuntu-1204> (0m18.25s).
тЖР[0m-----> Kitchen is finished. (0m18.68s)
рдпрд╣ рд▓реЙрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реЗрдВрдбреЗрд▓рдореЗрд▓ рдХреБрдХрдмреБрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рд╕реЗрдВрдбрдореЗрд▓ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрди рд╕рд╛рдзрдиреЛрдВ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рджрд┐рдЦрд╛рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреБрдХреАрдЬрд╝ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдмрд░реНрдХрд╢реЗрд▓рдл рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
рд╢реЗрдл рд╣реЛрдордкреЗрдЬрдЯреЗрд╕реНрдЯ рдХрд┐рдЪрди рд╣реЛрдордкреЗрдЬрдмрд░реНрдХрд╢реЗрд▓ рд╣реЛрдордкреЗрдЬрдСрдкреНрд╕рдХреЛрдб рд╕рдореБрджрд╛рдп рдХреБрдХрдмреБрдХрд╢реЗрдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ
рдорд┐рд╕реНрдЯреАрдХ рдпрд╣рд╛рдБ рд▓рд┐рдЦрддреЗ
рд╣реИрдВ