Getting Productive with Chef Cookbooks

Brought by: Pluralsight

Overview

Using Chef to define and configure your systems requires an understanding of what’s possible as well as the tools you will have at your disposal. In this course, you will learn the fundamentals to develop configuration management solutions with Chef.

Because this course builds on the Planning & Installing Chef course, the viewer will already have a functional Chef lab environment, or at least have the capacity to create one. In that course, we focused on the end result, and the Chef recipes and cookbooks we created in Planning & Installing Chef were purposefully quick and dirty, and did not adhere to any kind of development standards. However, this would not work in the day-to-day life of a Chef administrator, where robust, repeatable code is the critical foundation of reliable infrastructure and application configuration. In order to achieve this, in this course we will develop Chef cookbooks designed to configure pre-existing Windows 2012 R2 Server and Ubuntu Server 14.04 LTS systems with a fully-functional web application with database backend (IIS/SQL and Apache/MySQL respectively). These cookbooks will consist of code we build ourselves, as well as, community cookbooks from the Opscode Marketplace. We will then use Test Kitchen and Vagrant to test our cookbooks in a dynamically-created test environment to make sure they are solid, before uploading the code in to production to be applied against our live servers.

Taught by

James Bannan

Getting Productive with Chef Cookbooks
Go to course

Getting Productive with Chef Cookbooks

Brought by: Pluralsight

  • Pluralsight
  • Paid
  • English
  • Certificate Available
  • Available at any time
  • beginner
  • N/A
8.1.2PHP Version297msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (175ms)
    • Application (121ms)
    • 1 x Booting (58.93%)
      174.92ms
      1 x Application (40.84%)
      121.24ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed13.86ms
      • select * from `courses` where `slug_en` = 'getting-productive-with-chef-cookbooks' limit 1
        12.56ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. getting-productive-with-chef-cookbooks
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-06-07 07:04:26' where `id` = 5516
        520μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-07 07:04:26
        • 1. 5516
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (69)
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        150μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (57) and `providers`.`deleted_at` is null
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 5507 limit 1
        250μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 5507
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        1hdZn5WIKzmgDb8XhoPvAq5UX7qarxmMdZ4PK5s1
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/getting-productive-with-chef-cookbooks" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/getting-productive-with-chef-cookbooks
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.106" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.106" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "94be4b982d2122f3-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.106" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.106" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "94be4b982d2122f3-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "33908" "REMOTE_ADDR" => "172.71.254.40" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/getting-productive-with-chef-cookbooks" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1749279865.8807 "REQUEST_TIME" => 1749279865 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 07 Jun 2025 07:04:26 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IllTWFJreDZnL0tGYXdINVZVYnRNQ0E9PSIsInZhbHVlIjoiNGRUSGV3UmVaM2NXRUdrZVovRzdNZXJGOGxRNGxlbzMrTS9ockJWbnY2ODRvUUwwT2JJakZQSjB5blVyZDNBTnRCTmhtekFsSHVFRHhJaUVRRlNOOVhzM3pKOUtjeExmUUZPRmVvYWszNzNpS0w3VWM1dU5pS2NncWNjR01sTjEiLCJtYWMiOiJiNmRiOTJkODE0ZmVhNjYyNjFlODU5OGMzY2Y3NzhlNTI3YWRkYWVhMzkwZDg4Mzk3ZmVlZjdjZmUwYWY5YTc1IiwidGFnIjoiIn0%3D; expires=Sat, 07 Jun 2025 09:04:26 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IllTWFJreDZnL0tGYXdINVZVYnRNQ0E9PSIsInZhbHVlIjoiNGRUSGV3UmVaM2NXRUdrZVovRzdNZXJGOGxRNGxlbzMrTS9ockJWbnY2ODRvUUwwT2JJakZQSjB5blVyZDNBTnRCTmhte" 1 => "laravel_session=eyJpdiI6InNNcnU4Y2xQU1dLNTZGREo1S0VRWFE9PSIsInZhbHVlIjoiUnRML0FmdUhXaXZoRDQ3Q1BLbXUrVmhNWlJXTkNxcUdhOVJxV3liVW9MSU9vMEtQY2xCa1hvMnhZVTJsZE1ZYzR1eGNVRmI4UkJPbWc5VlQ5ejdSUlpQQkdJYk9nZlVVZ1BORGVYMGNOZDFRdzFOYVlTeHdkY3M2ZnBzSTk4U3MiLCJtYWMiOiI5MjUyZTUyYjVkNzRiNGM0MDU2MDI2YjFkMGVlMDRlNjRiMTYxMDc1OTA0MTNjYmFmOWYxZDllNGRkNjllMDIzIiwidGFnIjoiIn0%3D; expires=Sat, 07 Jun 2025 09:04:26 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6InNNcnU4Y2xQU1dLNTZGREo1S0VRWFE9PSIsInZhbHVlIjoiUnRML0FmdUhXaXZoRDQ3Q1BLbXUrVmhNWlJXTkNxcUdhOVJxV3liVW9MSU9vMEtQY2xCa1hvMnhZVTJsZE1ZYzR1" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IllTWFJreDZnL0tGYXdINVZVYnRNQ0E9PSIsInZhbHVlIjoiNGRUSGV3UmVaM2NXRUdrZVovRzdNZXJGOGxRNGxlbzMrTS9ockJWbnY2ODRvUUwwT2JJakZQSjB5blVyZDNBTnRCTmhtekFsSHVFRHhJaUVRRlNOOVhzM3pKOUtjeExmUUZPRmVvYWszNzNpS0w3VWM1dU5pS2NncWNjR01sTjEiLCJtYWMiOiJiNmRiOTJkODE0ZmVhNjYyNjFlODU5OGMzY2Y3NzhlNTI3YWRkYWVhMzkwZDg4Mzk3ZmVlZjdjZmUwYWY5YTc1IiwidGFnIjoiIn0%3D; expires=Sat, 07-Jun-2025 09:04:26 GMT; path=/XSRF-TOKEN=eyJpdiI6IllTWFJreDZnL0tGYXdINVZVYnRNQ0E9PSIsInZhbHVlIjoiNGRUSGV3UmVaM2NXRUdrZVovRzdNZXJGOGxRNGxlbzMrTS9ockJWbnY2ODRvUUwwT2JJakZQSjB5blVyZDNBTnRCTmhte" 1 => "laravel_session=eyJpdiI6InNNcnU4Y2xQU1dLNTZGREo1S0VRWFE9PSIsInZhbHVlIjoiUnRML0FmdUhXaXZoRDQ3Q1BLbXUrVmhNWlJXTkNxcUdhOVJxV3liVW9MSU9vMEtQY2xCa1hvMnhZVTJsZE1ZYzR1eGNVRmI4UkJPbWc5VlQ5ejdSUlpQQkdJYk9nZlVVZ1BORGVYMGNOZDFRdzFOYVlTeHdkY3M2ZnBzSTk4U3MiLCJtYWMiOiI5MjUyZTUyYjVkNzRiNGM0MDU2MDI2YjFkMGVlMDRlNjRiMTYxMDc1OTA0MTNjYmFmOWYxZDllNGRkNjllMDIzIiwidGFnIjoiIn0%3D; expires=Sat, 07-Jun-2025 09:04:26 GMT; path=/; httponlylaravel_session=eyJpdiI6InNNcnU4Y2xQU1dLNTZGREo1S0VRWFE9PSIsInZhbHVlIjoiUnRML0FmdUhXaXZoRDQ3Q1BLbXUrVmhNWlJXTkNxcUdhOVJxV3liVW9MSU9vMEtQY2xCa1hvMnhZVTJsZE1ZYzR1" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "1hdZn5WIKzmgDb8XhoPvAq5UX7qarxmMdZ4PK5s1" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/getting-productive-with-chef-cookbooks" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]