This might help... I execute a command and wrap it up with the canonify
function.
vars:
"linux_machine_model" string =>
canonify(execresult("/usr/sbin/dmidecode -s system-product-name","noshell"));
Canonify is a function that will “sanitize” the input to make it happy to set a
class against. Once I have that string in a variable, I just call a class
against it. Canonify is going to replace spaces / dashes with underscores, so
its handy to print this variable out in a reports: promise when you’re testing
what your class will end up being called.
classes:
linux::
"$(linux_machine_model)" or =>
{"cfengine_3"};
I assume that cfengine_3 will always be set... So, the variable
linux_machine_model gets set as a class. Note, it looks like you’re reading
from a file. Look at the reference guide under “functions that return string”
for functions that will assist reading data from files.
On 7/19/11 9:34 AM, "[email protected]" <[email protected]> wrote:
> Forum: CFEngine Help
> Subject: Variable Class Names
> Author: jordy
> Link to topic: https://cfengine.com/forum/read.php?3,22838,22838#msg-22838
>
> Hi!!
>
> I think this question can be a newbie question, but I've searched for answers
> and I can't find any.
>
> I have a variable that can have different strings depending of the server. The
> question is that I want to convert the content of this variable in a class
> name.
>
> For example:
>
>
> {bunde agent my_app {
>
> vars:
> server_type => (read from file and it can be: db_server, app_server,
> dns_server, etc.)
>
> files:
>
> db_server::
> "XXXXXXX"
>
> app_server::
> "XXXXXXX"
>
> dns_server::
> "XXXXXXX"
>
> etc..
> }
>
>
>
> Anyone knows how can I reach this behavior?
>
> Thank you
>
>
> Jorge
>
> _______________________________________________
> Help-cfengine mailing list
> [email protected]
> https://cfengine.org/mailman/listinfo/help-cfengine
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine