You're welcome !
Yes it'll work on both, but you should probably rename it to "repaired",
or something like that, to have a name matching the behaviour. And I
prefer the first version of the code, where the promise is set as
repaired if the whole edit_line is done.
Nicolas
On 26/09/2010 21:55, Simon Oxwell wrote:
Hi Nicolas,
So I should only be setting like this:
bundle edit_line append_if_no_line_set_class(str,class) {
insert_lines:
"$(str)"
classes => satisfied($(class));
}
body classes satisfied(new_class) {
promise_repaired => { "$(new_class)"};
}
Not sure if I understand exactly why that should work.
**goes and checks the manual again**
Aaah, right. Looks like my understanding was a bit reversed. If the
promise was repaired, it set the class to the true, not the way I was
thinking it was working, which for some reason was that
'promise_repaired' became a property of the class. (Getting the
cfengine 'class' confused with an OOP 'class' at some level, methinks)
Which mean the same 'satisfied' definition would work with both code
examples?
Thank you for your help!
Simon
*From:* help-cfengine-boun...@cfengine.org
[mailto:help-cfengine-boun...@cfengine.org] *On Behalf Of *Nicolas Charles
*Sent:* 26 September 2010 20:41
*To:* help-cfengine@cfengine.org
*Subject:* Re: Restarting a service after a configuration file change.
You're code is nearly correct. You just need to set the class if the
promise is repaired, not if it's kept.
body classes satisfied(new_class) {
promise_repaired => { "$(new_class)"};
}
Regards,
Nicolas
On 26/09/2010 21:29, Simon Oxwell wrote:
Hi there,
I'm running cfengine 3.0.4 on Solaris 10, and I'm trying to build a
promise that will append a line to my sshd_config file and then
restart the ssh service, but only when the sshd_config has been updated.
So far I've tried this:
-- Start code
bundle agent authorizedkeyfiles {
files:
"/tmp/sshd_config"
edit_line => append_if_no_line("AuthorisedKeyFile /var/ssh/%u"),
classes => satisfied("sshd_configuration_altered");
commands:
sshd_configuration_altered::
"/usr/sbin/svcadm restart ssh";
}
bundle edit_line append_if_no_line(str) {
insert_lines:
"$(str)"
}
body classes satisfied(new_class) {
promise_kept => { "$(new_class)"};
promise_repaired => { "$(new_class)"};
}
-- End code
And this:
-- Start Code
bundle agent authorizedkeyfiles {
files:
"/tmp/sshd_config"
edit_line => append_if_no_line_set_class("AuthorisedKeyFile
/var/ssh/%u", "sshd_configuration_altered");
commands:
sshd_configuration_altered::
"/usr/sbin/svcadm restart ssh";
}
bundle edit_line append_if_no_line_set_class(str,class) {
insert_lines:
"$(str)"
classes => satisfied($(class));
}
body classes satisfied(new_class) {
promise_kept => { "$(new_class)"};
promise_repaired => { "$(new_class)"};
}
-- End Code
But they both seem to result in ssh being restarted every time the
promise is evaluated. I'm assuming that this is because the
"insert_lines" is deemed to be a kept promise if the line to be
inserted exists in the file?
Is there a way of setting a class to Boolean true only if the file is
actually updated?
Thanks,
Simon
--
*Simon Oxwell*
*ControlCircle*
*Senior Server Engineer*
*The Datacentre People*
0044 (0)20 7517 6594
Hertsmere House, 2 Hertsmere Road,
simon.oxw...@controlcircle.com <mailto:simon.oxw...@controlcircle.com>
London, E14 4AB
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org <mailto:Help-cfengine@cfengine.org>
https://cfengine.org/mailman/listinfo/help-cfengine
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine