/challenges-chef

:book: Challenges Your Chef Skills By Solving Real Questions.

Primary LanguageRuby

1 Summary

linkedin github slack

PRs Welcome

2 CheatSheet

File me Issues or star this repo.

See more challenges from Denny: #denny-challenges

2.1 Scenario-101: Chef HelloWorld I

  • Objective: Create a dummy cookbook, and test deployment in docker
  • Requirements:
1. Use docker container to start a env with chef pre-installed
2. Create a dummy cookbook and apply it

2.2 Scenario-102: Chef HelloWorld II

  • Objective: Pure VM deployment
  • Requirements:
1. Start a VM, install chef facility
2. Create a dummy cookbook to install jq package
3. Before install jq, run "apt-get update" by chef. So you need berkshelf.
4. Enforce rubocop and foodcritic for code static check

2.3 Scenario-103: Chef HelloWorld III

  • Objective: Setup chef server and chef client
  • Requirements:
1. Start 3 containers to run chef server, knife workstation and chef client
2. Install and configure knife
3. From knife node run chef deployment in chef client node

2.4 Scenario-201: Enforce TDD For Your Chef Cookbooks I

  • Objective: Test your cookbooks. Run kitchen docker in your laptop.
  • Requirements:
1. Use kitchen to test your cookbook: start a container and test the logic
2. Enforce kitchen verify logic via serverspec

2.5 Scenario-202: Enforce TDD For Your Chef Cookbooks II

  • Objective: Deploy for 3 scenarios: docker, local VM and public cloud
  • Requirements:
1. Use Kitchen to test local vm deployment
2. Use Kitchen to test docker deployment
3. Use Kitchen to test cloud VM deployment

2.6 Scenario-301: Use Chef To Deploy Jenkins I

  • Objective: Use chef to deploy one common service for real
  • Requirements:
1. Deploy a standalone jenkins by chef
2. Chef shall add one jenkins user
3. Chef shall add a dummy job with slack notification enabled
4. Run deployment in docker, vagrant and EC2
5. Test both Ubuntu 14.04 and Centos 7

2.7 Scenario-302: Use Chef To Deploy Jenkins II

  • Objective: More Jenkins customization
  • Requirements:
1. For better security, only registered user can login
2. For better security, Jenkins listen on port 18080, instead of 8080
3. When Jenkins is down, get alerts

2.8 Scenario-303: Use Chef To Deploy Jenkins II

  • Objective: More Jenkins customization
  • Requirements:
1. Use Jenkinsfile to create a Jenkins pipeline
2. Enable and configure ThinBackup

2.9 Scenario-401: Use Chef To Deploy 2 Nodes Jenkins I

  • Objective: Test and verify the deployment for both all-in-one and 2 nodes cluster
  • Requirements:
1. Test 2 nodes jenkins cluster deployment in docker
2. Use Jenkinsfile to configure Jenkins
3. Define Jenkins pipeline

3 More Resources

License: Code is licensed under MIT License.

  • Useful links
https://github.com/chef-cookbooks/jenkins
https://github.com/jenkinsci/pipeline-examples
linkedin github slack