Solucions cfengine

De Jose Castillo Aliaga
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");
   }