Solucions cfengine
Ir a la navegación
Ir a la búsqueda
Començar - Inici
Per començar a utilitzar cfengine, es pot imaginar la següent plantilla per entrar en exemples. Aquesta part del codi és comú a tots els exemples.
body common control { bundlesequence => { "main" }; inputs => { "cfengine_stdlib.cf" }; } bundle agent main { # example }
A continuació, entrar en els casos de la següent manera.
# The general pattern bundle component name(parameters) { what_type: where_when:: # Traditional comment "promiser" -> { "promisee1", "promisee2" }, comment => "The intention ...", handle => "unique_id_label", attribute_1 => body_or_value1, attribute_2 => body_or_value2; }
Creació de fitxers i directoris
######################################################## # # Test simple de creació de fitxers # ######################################################## body common control { bundlesequence => { "testbundle" }; } ######################################################## bundle agent testbundle { files: # de moment no dona ninguna condició per a fer-ho (p.e cfengine3 o altres) "/home/mark/tmp/test_plain" # es deu interpretar com la promesa de que existirà un fitxer amb aquesta ruta perms => system, # té els permisos del body perms system (baix) create => "true"; # es deu crear si no existeix "/home/mark/tmp/test_dir/." perms => system, create => "true"; } ######################################################### body perms system { mode => "0640"; } #########################################################
Cal recordar que tot funciona com a promeses, per tant, no és un script que diga de crear els fitxer de tal manera, sino que el propi cfengine se encarrega de complir la promesa com siga.
Copiar Fitxers
En aquest cas, per a cumplir la promesa de existència d'un fitxer, el copiarà d'un lloc local i remot
body common control { bundlesequence => { "mycopy" }; inputs => { "cfengine_stdlib.cf" }; # Necessita The Community Open Promise-Body Library (COPBL; cfengine_stdlib.cf) # sudo wget https://cfengine.com/manuals_sources/cfengine_stdlib.cf # La llibreria proporciona unes ferramentes útils, en aquest cas de copiar } bundle agent mycopy { files: "/home/mark/tmp/test_plain" copy_from => local_cp("$(sys.workdir)/bin/file"); # aquesta promesa la pot complir perquè té el COPBL local_cp es por trobar en ella. "/home/mark/tmp/test_remote_plain" copy_from => secure_cp("$(sys.workdir)/bin/file","serverhost"); }