-
Notifications
You must be signed in to change notification settings - Fork 278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
server components should be broken out into a unique cookbook #616
Comments
@smcavallo hmm I have been consuming (and more recently maintaining) this cookbook for about 5 years and have never had a dependency conflict with it. I have used this cookbook in various forms such as all in one, all but rabbitmq, and all but rabbitmq + redis. I'd like to better understand what kind of issues you have seen as I think it would break a lot of peoples usage and I'd be very hesitant to do so without a very compelling reason. Looking through the dependencies they are quite loose so any additional information you can provide would be helpful.
Based on this statement you are using
Can you elaborate on what this looks like? For example the same rabbitmq certificate is needed on both the client and server. If you are referring to your own custom secrets (such as using token substitution) you can maintain your own business logic for how to retrieve them only on the clients that you want them on, I am not sure how this community cookbook could know what that would look like.
Appreciated and look forward to working with you on improving this cookbook whether that looks like splitting it out or finding additional ways to reduce dependency issues with smaller incremental change. @tas50 what are your thoughts on this? |
@majormoses -
The downstream dependencies are for the most part limited to the rabbitmq and redisio cookbooks. We use chef-server and lock cookbooks at the environment level. We run non-sensu rabbitmq servers as part of our infrastructure. |
@smcavallo thanks for taking the time to help me understand. As there is no I think there are a lot of people who use this as an all in one and I'd hate to break even 50% of use cases when there is a middle ground. @tas50 any thoughts? |
@majormoses - yes i'd love for those dependencies to be 'suggests' instead of 'depends' and would give us the flexibility to include/exclude those dependencies in our wrapper cookbooks. afaik the 'suggests' is deprecated which is why i didn't advocate for that solution, although simply changing those dependencies to 'suggests' would solve all our problems. |
If acceptable, i've created a PR for the change from depends to suggests.
If you ever bump the minimum versions of these cookbooks, there's no mechanism for consumers to know that they need to update the version requirements in their wrapper cookbooks. |
Please don't use suggests in metadata. It does nothing at all and we're going to be removing that code entirely in the next version of Chef. |
@tas50 and @majormoses - agreed - closed that PR |
In an ideal world if we were starting from scratch what I would probably do is this:
I need to think about this more and poll the community to get a better understanding on the impact to existing users. I imagine the number of users this would affect is quite high in comparison to the number of people who would benefit from such a split. Additionally I will have a discussion with sensu inc about it to get their two cents. |
@majormoses - agreed with the above, as a consumer, we can live with this 'as-is' for now as sensu 2.0 is coming down the pipeline. would it make sense for the sensu 2.0 cookbooks to follow that design? |
The sensu 2.x cookbook is something we have already been working on here: https://github.com/sensu/sensu-go-chef and its only current dependency is on Sensu Deployment now consists of two golang compiled binaries from the various OS packages:
|
If someone decides to use an external |
I hope the next sensu cookbook does follow this pattern. Let's simply take Rabbitmq for example. If I want to set up sensu to monitor my production rabbitmq cluster I now have to use the same version of the rabbitmq community cookbook on both my sensu server and rabbitmq nodes when in reality they should not be correlated what so ever just because they use the same sensu cookbook. If sensu-client had its own cookbook I can remove those dependencies. Why do I have to have redis as a dependency on my production rabbit cluster? |
@oscar123mendoza yup the |
Proposal to break server components out to a unique cookbook.
The client install does not have many requirements/dependencies
The server components have a lot of requirements/dependencies - ex. requires rabbitmq/redis cookbooks
Consumers end up having to maintain all the dependent cookbooks and pushing them to all nodes
Compatibility/version conflict problems can arise for some of the dependent cookbooks.
Namely - the rabbitmq cookbook and/or attributes being applied to a non-sensu server which needs rabbitmq.
Proposal is to break out the server components into a unique cookbook/repo.
It could secure some secrets/config/attributes which should only apply to the server - better security.
Another added benefit is that it would make the cookbook(s)/PRs/issues easier to manage and revision.
I'm also proposing this because I'd like to contribute to this effort.
The text was updated successfully, but these errors were encountered: