GoCD, from ThoughtWorks in Chicago, is an application lifecycle management and development tool.
N/A
Progress Chef
Score 6.8 out of 10
N/A
Chef IT infrastructure automation suites were developed by Chef Software in Seattle and acquired by Progress Software in September 2020. The Chef Enterprise Automation Stack is an integrated suite of automation technologies presented as a solution for delivering change quickly, repeatedly, and securely over every application's lifecycle. The Chef Effortless Infrastructure Suit is an integrated suite of automation technologies to codify infrastructure, security, and compliance, as well as…
Previously, our team used Jenkins. However, since it's a shared deployment resource we don't have admin access. We tried GoCD as it's open source and we really like. We set up our deployment pipeline to run whenever codes are merged to master, run the unit test and revert back if it doesn't pass. Once it's deployed to the staging environment, we can simply do 1-click to deploy the appropriate version to production. We use this to deploy to an on-prem server and also AWS. Some deployment pipelines use custom Powershell script for.Net application, some others use Bash script to execute the docker push and cloud formation template to build elastic beanstalk.
Chef is a fantastic tool for automating software deployments that aren't able to be containerized. It's more developer-oriented than its other competitors and thus allows you to do more with it. The Chef Infra Server software is rock-solid and has been extremely stable in our experience. I would definitely recommend its use if you're looking for an automation framework. And it also offers InSpec which is a very good tool for testing your infrastructure to ensure it deployed as intended.
Pipeline-as-Code works really well. All our pipelines are defined in yml files, which are checked into SCM.
The ability to link multiple pipelines together is really cool. Later pipelines can declare a dependency to pick up the build artifacts of earlier ones.
Agents definition is really great. We can define multiple different kinds of environments to best suit our diverse build systems.
Chef could do a better job with integration with other DevOps tools. Our company relies on Jenkins and Ansible, which took some development and convincing for plug-ins to be created/available.
It would be nice if kitchen didn't only have a vagrant/virtual-box prerequisite. Our company one day stop allowing virtual-box to run without special privileges, and that caused a lot of issues for people trying to do kitchen tests.
Chef could use more practice materials for the advanced certification badges. There was not a lot of guidance in what to study or examples of certain topics.
The suite of tools is very powerful. The ability to create custom modules allows for unlimited potential for managing all aspects of a system. However, there is pretty significant learning curve with the toolset. It currently takes approx 3-4 months for new engineers to feel comfortable with our implementation
It loads quick enough for basically all our systems. Because we have this for local dev environments, speed isn't really a big issue here. Yes, depending on the system, sometimes it does take a relatively long time, but it's not an issue for me. One thing that is annoying is that if I want to make a small change to a cookbook and re-run the Chef client, I can't just make the change in the cache and run it. I have to do the whole process of updating the server.
Support for Chef is easily available for fee or through the open source community as most the issues you will face will have been addressed through the Chef developer community forums. The documentation for Chef is moderate to great and easily readable.
GoCD is easier to setup, but harder to customize at runtime. There's no way to trigger a pipeline with custom parameters.
Jenkins is more flexible at runtime. You can define multiple user-provided parameters so when user needs to trigger a build, there's a form for him/her to input the parameters.
We considered the three leading competitors in the field: Chef, Puppet and Ansible. Ansible is a very strong competitor and has a nice degree of flexibility in that it does not require a client install. Instead the configuration is delivered by SSH which is very simple. Puppet seems like it has fallen off the pace of the competition and lacked the strong community offered by Chef. We chose Chef because of the strong support by the company and the dynamic and deep community support.
The entire professional services team was great to work with. The curriculum was tailored to our specific use cases. The group we worked with were very responsive, listened to our feedback, was very easy to schedule and accommodate. I cannot say enough good things about our professional services experience
Settings.xml need to be backed up periodically. It contains all the settings for your pipelines! We accidentally deleted before and we have to restore and re-create several missing pipelines
More straight forward use of API and allows filtering e.g., pull all pipelines triggered after this date
Chef is a good tool for baselining servers. It will be a good ROI when there are huge number of servers. For less number of servers maintaining a master will be an over head.
One good ROI will be that the Operations Team also gets into agile and DevOps methodologies. Operational teams can start writing scripts/automations to keep their infra more stable and their application stack more reliable.
Implementation of Chef eliminates the manual mode of doing things and everyone aligns to automation mind set. It helps in change of culture.