-
-
Notifications
You must be signed in to change notification settings - Fork 73
Support for only installing select services on a node #282
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
base: master
Are you sure you want to change the base?
Conversation
9ee2ff7 to
effe6bb
Compare
effe6bb to
e9a4e0b
Compare
arm4b
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, @nmaludy.
As I recall, st2_services was added just to help with identifying services we needed to restart depending on a st2 version. This is relevant to releases when workflowengine was added and so on.
Interesting that it's now helpful for the HA compatible work. I left a couple of comments to address.
Smoke Tests seem to pass OK so no problem there.
| path: /opt/stackstorm/st2/bin/st2ctl | ||
| regexp: '^COMPONENTS=' | ||
| line: "COMPONENTS=\"{{ st2_services | join (' ') }}\"" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modifying /opt/stackstorm/st2/bin/st2ctl st2 core binary in-place is obviously not a good thing.
What are the alternative approaches here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only other thing i can think of is some way of identifying which services are supposed to be enabled on a host (thinking a config file, maybe st2.conf).
However, this would require changes to st2 core itself.
Relying on systemd themselves being enabled and grepping that output is unreliable as something or someone maybe have disabled a service that should be enabled.
I think this is a decent middle ground approach until we figure out if/how to support this in st2 core.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - name: reload st2 | ||
| become: yes | ||
| command: st2ctl reload --register-all | ||
| when: "'st2actionrunner' in st2_services" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Listing st2actionrunner might be very specific to implementation details in your environment.
Technically both st2api and st2sensorcontainer should have access to pack content as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The st2api service is "leaky" though. Given the way that this ansible setup works, you also need to install st2api on any host that has st2chatops because it is used to create the ChatOps API key.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could maybe do something like:
when: "'st2actionrunner' in st2_services and 'st2api' in st2_services"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about st2api or st2actionrunner or st2sensorcontainer? Technically, all these services should have access to the pack content.
This Ansible module supports only installing/running select services by specifying the
st2_servicesvariable. However, when doing so it causes issues in various cases because, for example, things likest2ctl reload --register-allcan only be run on ast2actionrunnernode where the pack content is available. If you're on a node just runningst2apithis command is going to fail.This change does the following:
whenconditions for various handlers to only restart services when they are necessaryst2ctlon the node to only contain the specified services in itsCOMPONENTSvariable, so thatst2ctlcommand still work as expected! :)pipPR i did yesterday:@armab i'm thinking about also adding some
whenconditions to thest2smoketestswhere appropriate. Could you help me figure out what the conditions should be there?Thanks!