Changes between Version 26 and Version 27 of FeddConfig


Ignore:
Timestamp:
Jun 11, 2014 3:54:58 PM (10 years ago)
Author:
faber
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • FeddConfig

    v26 v27  
    22= Configuring fedd =
    33
    4 As noted in installation, many of these parameters define the layout of
    5 the fedd instantiation on your machine, so read the reference below and
    6 look at the [FeddConfigExamples examples] to make sure you understand how fedd is working on
    7 your testbed.
    8 
    9 If you are configuring an access controller that allows you to share loaclly administered resources with other federants, you should primarily configure the ![access] sections below.  Choose the sub-sections that correspond to the plug-in you intend to configure.  First time fedd users should try walking through the [wiki:FeddSkelPlugin configuration and testing of a skeleton plug-in] to acquaint themselves with the basic operation of configuring an access controller.  That section walks a user through the configuration of an access controller step by step.
    10 
    11 Fedd configuration files are broken down into sections that configure the various subcomponents.  For experiment controllers, only the experiment_control section is required.  Access controllers require more or fewer sections based on the features provided by the [FeddPluginArchitecture plug-in] that is being used.  Though the richness of configuration may seem daunting at first, the examples section should lead you to simple setups.
    12 
    13 Access controllers and experiment controllers each have an access database that defines the services
    14 they grant to a given fedid.  We describe the global configuration file
    15 first, and then the access databases.
     4This section is a reference on the `fedd` configuration files.
     5
     6If you are configuring an access controller that allows you to share loaclly administered resources with other federants, you should primarily configure the ![access] sections below.  Choose the sub-sections that correspond to the plug-in you intend to configure.  First time fedd users should try walking through the [FeddGettingStarted adminstrator's guide] or the [wiki:FeddSkelPlugin configuration and testing of a skeleton plug-in] to acquaint themselves with the basic operation of configuring an access controller.  That section walks a user through the configuration of an access controller step by step.
     7
     8Fedd configuration files are broken down into sections that configure the various subcomponents.  For experiment controllers, only the experiment_control section is required.  Access controllers require more or fewer sections based on the features provided by the [FeddPluginArchitecture plug-in] that is being used.  Though the richness of configuration may seem daunting at first, the [FeddGettingStarted adminstrator's guide]  should lead you to simple setups.
     9
     10Access controllers and experiment controllers each have an access database that defines the services they grant to a given fedid.  We describe the global configuration file first, and then the access databases.
    1611
    1712== Main Configuration File (`fedd.conf`) ==
     
    2318use any of the substitution tricks in the python documentation as well.
    2419There are 5 sections, one for each component and one for global options.
     20
     21The format allows attributes to be substituted into other values, so it is a bset practice to define an attribute for commonly used values like so:
     22
     23{{{
     24[DEFAULT]
     25# Configuration directory
     26base: /usr/local/etc/fedd/fedd
     27
     28#logging directory
     29var: /var/db/fedd/fedd
     30
     31# Machine running fedd
     32hostname=users.isi.deterlab.net
     33}}}
     34
     35These can be substituted at other places in the same file, like so:
     36
     37{{{
     38repodir: %(var)s/repo
     39repo_url: https://%(hostname)s:23235
     40}}}
     41
     42Note that the "s" after the second parenthesis is literal and required.
    2543
    2644=== Global Options ===
     
    6381
    6482 '''accessdb'''::
    65   The ABAC DB that maps three-level names to local project and users (for creation and
    66   services).  This is the map file generated by [wiki:FeddABAC#access_to_abac.py access_to_abac.py]. Usually something like `%(base)s/deter_abac_map`.
     83  The ABAC DB that maps three-level names to local project and users (for creation and  services).  This is the map file generated by [wiki:FeddCommands#access_to_abac.py access_to_abac.py]. Usually something like `%(base)s/deter_abac_map`.
    6784 '''access_state'''::
    6885  Name of the file where current access state is saved.  This state includes
    6986  the access granted to each federated experiment request and is used to decide
    7087  what to release and when.  Must be specified for access decisions to survive
    71   fedd failures or node reboots.  A file in `/var/db/fedd` is often used.
    72  '''access_type'''::
    73   The underlying plug-in module to use for access.  Currently '''emulab''', '''dragon''', '''deter_internal''', and '''protogeni''' are understood.  We will be adding more choices as well as dynamic choices in the near future.   The default is '''emulab''', for backward compatibility.
     88  fedd failures or node reboots.  A common value `%(var)s/access.state`.
    7489 '''auth_type'''::
    75    Access control system used.  Must be '''abac''' or '''legacy''', and obviously '''abac''' is preferred.
     90   '''Deprecated'''. Access control system used only '''abac''' works.
    7691 '''auth_dir'''::
    77    When '''abac''' is specified for '''auth_type''' this is the diretory that holds the ABAC authorization directory, probably created by [wiki:FeddABAC#access_to_abac.py access_to_abac.py].
     92   The diretory that holds the ABAC authorization directory, created by [wiki:FeddCommands#access_to_abac.py access_to_abac.py].
    7893 '''cert_file'''::
    7994  Certificate used to assert identity of the access controller.  It uses this
    80   certificate when proxying requests. Note that the certificates used in the [allocate] section are used to contact a remote allocation `fedd`.  If this field is not present and a '''cert_file''' is present in the [globals] section, the [globals] certificate will be used.
     95  certificate when proxying requests. If this field is not present and a '''cert_file''' is present in the [globals] section, the [globals] certificate will be used.
    8196 '''certdir'''::
    82   Local certificates for granting access to sub-experiments.  This directory should be writable by fedd and unreadable to all others.
     97  Local certificates for granting access to sub-experiments.  This directory should be writable by fedd and unreadable to all others.  `%(base)s/certs` or `%(var)s/certs` are common.
    8398 '''cert_pwd'''::
    8499  Password for the private key in '''cert_file'''.  If the [globals] certificate is used, so is the [globals] '''cert_pwd''', if any.
     
    94109  a file containing the trusted CAs used for SSL validation.  If this is not
    95110  present, no certificate path checking is done.  If this field is not present and a '''trusted_certs''' field is present in the [globals] section, the [globals] certificates will be used.
     111'''type'''::
     112  The underlying plug-in module to use for access.  Currently '''emulab''', '''dragon''', '''deter_internal''', '''protogeni''', '''desktop''', and '''starbed''' are understood.  We will be adding more choices as well as dynamic choices in the near future.   The default is '''emulab''', for backward compatibility.
    96113
    97114In addition they understand the following debugging settings:
     
    105122==== Emulab Controllers ====
    106123
    107 Emulab controllers understand and respect the following options, as well as the [allocation] section described below.
    108 
     124Emulab controllers understand and respect the following options.
     125
     126
     127 '''boss'''::
     128  The DNS name of the Emulab boss node.  The controller contacts this node to create and manipulated local experiments.
    109129 '''deter_internal'''::
    110130  True if the Emulab supports interval VLANs controlled by a `deter_internal` controller.
    111131 '''dragon'''::
    112132 True if the testbed is connected to the DRAGON transit
    113  '''dragon_vlags'''::
     133 '''dragon_vlans'''::
    114134 If the testbed is connected to a set of static DRAGON VLAN termination numbers, this is the list of VLAN IDs.  The lists of the form 1-10,11,14 are permitted.
    115135 '''federation_software'''::
     
    117137 '''local_seer_software'''::
    118138 '''local_seer_image'''::
    119  '''local_seer_startup'''::
     139 '''local_seer_start'''::
    120140 The software, disk image, and startup commands necessary to start a local [http://seer.isi.deterlab.net SEER] controller.
     141 '''nat_portal'''::
     142  If the controller is behind a [http://en.wikipedia.org/wiki/Network_address_translation NAT] or set of NATs, this holds the external addresses that will forward packets into the experiments.  This value is used to establish routes between sub-experiments.  A comma separated list of DNS names, IP addresses or both is required.
    121143 '''node_startcommand'''::
    122144 Startcommand to run for a generic node.  The version given in the [FeddConfigExamples examples] is right for our fedkit.
     145 '''ops'''::
     146  The DNS name of the Emulab ops node.  Local users' files and other local data is manipulated here.
    123147 '''portal_command'''::
    124148 Ns2 command to embed in an experiment description for a portal node, if any
     
    131155 '''portal_type'''::
    132156 Required portal hardware type, if any
     157 '''seer_master_start'''::
     158   The startup command to start a master [http://seer.deterlb.net SEER] controller.  A master SEER controller coordinates the local SEER servers.
     159 '''shared_nat'''::
     160  True if the controller uses the DETER extensions for a shared NAT for external access.
    133161 '''ssh_port'''::
    134162 Port used by portal nodes for remote access.  This rarely needs to be overridden.
     
    157185  '''userconfurl'''::
    158186  URL from which to acquire the exported user information.  It should almost always be the access controller's URL.
    159 
    160 
    161 ===== Allocation Options =====
    162 
    163 The [allocation] section controls how Emulab access controllers allocate projects locally. If the '''uri''' option is set in the [access] section, the [allocation] section defined the parameters used to communicate with the remote `fedd`.  If not, project allocation will occur on this machine and the parameters apply to the manipulation of the local Emulab state to grant access.
    164 
    165 We do not discuss the somewhat unusual case of a '''remote_emulab''' access controller that creates and destroys projects on the
    166 remote emulab by talking to a '''local_emulab''' access controller running on the remote Emulab.  Such a thing works, though.
    167 
    168 The following options are valid:
    169 
    170  '''accessdb''::
    171   This file controls which callers (i.e., which fedids) can access the project allocation services.  The format and execution mechanisms are on the [FeddDatabases databases page].  All the information contained in a database specified here can be specified in the global accessdb.
    172  '''allocation_level'''::
    173   This option defines what `fedd` will try to do to grant access.  The following are valid choices:
    174    * '''dynamic_projects''' - Add new projects and users to the local Emulab in response to requests.  What users and projects and who may successfully request them is a function of the access DB below.  The access component decides what projects and users to add and the allocation component does the work.
    175    * '''dynamic_keys''' - No projects or users are added to the local Emulab, but addtional keys may be granted access to user accounts and projects may have their access rights expanded.  Again the access component decides which users and projects to expand and the allocation system does so.
    176    * '''confirm_keys''' - The local Emulab is never changed, but the allocating `fedd` confirms that the users specified may be accessed by the given keys.  In effect, it confirms that the if the changes were requested, they would succeed.
    177    * '''none''' - The local Emulab is never changed, and no parameters are checked.  This makes allocation a no-op.
    178  '''allocation_state'''::
    179   Name of the file where current allocation state is saved.  This state includes
    180   the project and user changes made to support each federated experiment request.  That state is used to decide
    181   what to release and when.  Must be specified for allocation decisions to survive
    182   fedd failures or node reboots.  A file in `/var/db/fedd` is often used.
    183  '''addpubkey'''::
    184   Path to the `addpubkey` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/addpubkey` is usually insufficient.  See the instructions in [FeddDownload installing] for information on how to construct and install the `taddpubkey` version, and set this option to point at it.  Note that if you are not dynamically allocating resources, you need not create the new script nor set this option.
    185  '''cert_file'''::
    186   Certificate used to assert identity of the allocation component.  If '''uri''' is set in this section, this certificate is presented to the remote allocation `fedd`, if not this certificate is presented to the allocator making a request.  If this field is not present and a '''cert_file''' is present in the [globals] section, the [globals] certificate will be used.
    187  '''cert_pwd'''::
    188   Password for the private key in '''cert_file'''.  If the [globals] certificate is used, so is the [globals] '''cert_pwd''', if any.
    189  '''confirmkey'''::
    190   Path to the Emulab command used to confirm a user's public SSH key.  Only useful for local allocation.  The default of `/usr/testbed/sbin/addpubkey` is usually insufficient.  If you are interested in dynamic allocation, the same modifications that make `taddpubkey` sufficient as for use in adding and removing public SSH keys are sufficent for this use as well.  Follow the instructions in [FeddDownload installing] for information on how to construct and install the `taddpubkey` version, and set this option to point at it.  If you are not allocating resources dynamically, you can use the `confirm_sshkey.py` script packaged with `fedd` for this purpose.  By default it is installed as `/usr/local/bin/confirm_sshkey.py'.
    191  '''debug'''::
    192    If this boolean is true, a local allocating `fedd` will not execute the allocation commands, just log them (at debug priority).  It has no effect on a `fedd` that is calling out to make allocations.
    193  '''grantnodetype'''::
    194   Path to the `grantnodetype` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/grantnodetype` is usually insufficient.  See the instructions in [FeddDownload installing] for information on how to construct and install the `tgrantnodetype` version, and set this option to point at it.  Note that if you are not dynamically allocating resources, you need not create the new script nor set this option.
    195  '''log_level'''::
    196   The level of logging to produce from this component.  One of `debug`, `info`, `warning`, `critical`, and `error`.  See the [http://www.python.org/doc/current/library/logging.html standard python logging system] for details.
    197  '''mkproj'''::
    198   Path to the `mkproj` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/mkproj` is usually correct.
    199  '''newproj'''::
    200   Path to the `newproj` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/newproj` is usually correct.
    201  '''newuser'''::
    202   Path to the `newuser` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/newuser` is usually correct.
    203  '''rmproj'''::
    204   Path to the `rmproj` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/rmproj` is usually correct.
    205  '''rmuser'''::
    206   Path to the `rmuser` Emulab command.  Only useful for local allocation.  The default of `/usr/testbed/sbin/rmuser` is usually correct.
    207  '''trusted_certs'''::
    208   a file containing the trusted CAs used for SSL validation.  If this is not
    209   present, no certificate path checking is done.  If this field is not present and a '''trusted_certs''' field is present in the [globals] section, the [globals] certificates will be used.
    210  '''uri'''::
    211   If present this gives the uri of the `fedd` that will perform the manipulation of the local project database to grant and revoke access to the testbed.  In installations where `fedd` runs on both users and boss, this will tell the users `fedd` where to reach the boss `fedd`.  The certificates and trusted certificates specified in the [allocate] section establish the identity of this `fedd` when communicating with the remote `fedd`.
    212  '''user_to_project'''::
    213   Script to attach a new local (Emulab) user to a local (Emulab) project.  The `user_to_project.py` script shipped with `fedd` is used for this purpose by default.  Specifically, the default value of this option is `/usr/local/bin/user_to_project.py`.
     187  '''xmlrpc_cert
    214188
    215189==== Dragon Access Controllers ====
     
    307281
    308282 '''accessdb'''::
    309   Database that indicates who can request services from this `fedd` and what three-level names the `fedd` will attest on their behalf.  The specification is on the [FeddDatabases databases page].  This is unused and unnecessary when '''auth_type''' is '''abac'''.  It can be converted to ABAC format using [wiki:FeddABAC#fedd_to_abac.py fedd_to_abac.py].
     283  '''Deprecated'''. Database that indicates who can request services from this `fedd` and what three-level names the `fedd` will attest on their behalf.  The specification is on the [FeddDatabases databases page].  This is unused and unnecessary when '''auth_type''' is '''abac'''.  It is converted to ABAC format using [wiki:FeddABAC#fedd_to_abac.py fedd_to_abac.py].
    310284 '''auth_type'''::
    311    Access control system used.  Must be '''abac''' or '''legacy''', and obviously '''abac''' is preferred.
     285   '''Deprecated'''. Access control system used.  Must be '''abac'''.
    312286 '''auth_dir'''::
    313    When '''abac''' is specified for '''auth_type''' this is the diretory that holds the ABAC authorization directory, probably created by [wiki:FeddABAC#access_to_abac.py access_to_abac.py].
     287   The directory that holds the ABAC authorization directory,  created by [wiki:FeddCommands#fedd_to_abac.py fedd_to_abac.py].
    314288 '''cert_file'''::
    315289  Certificate used to assert identity of the experiment control component.  If this field is not present and a '''cert_file''' is present in the [globals] section, the [globals] certificate will be used.
    316290 '''cert_pwd'''::
    317291  Password for the private key in '''cert_file'''.  If the [globals] certificate is used, so is the [globals] '''cert_pwd''', if any.
     292 '''create_debug'''::
     293  If true, do not create experiments.
     294 '''default_testbed'''::
     295  The testbed to which to assign nodes without a testbed attribute.
     296 '''direct_transit'''::
     297  List of testbeds that can only interconnect other testbeds.
    318298 '''experiment_state'''::
    319  Name of the file where current experiment state state is saved.  This state includes
    320   the allocations made to support each federated experiment request as well as the information necessary to release those resources.  Must be specified for experiment to survive
    321   fedd failures or node reboots.  A file in `/var/db/fedd` is often used.
     299 Name of the file where current experiment state state is saved.  This state includes the allocations made to support each federated experiment request as well as the information necessary to release those resources.  Must be specified for experiment to survive. fedd failures or node reboots.  A file in `%(var)s/fedd` is often used.
     300 '''fedkit'''::
     301  The [FeddDownload#TheFederationKitfedkit fedkit] to use for connections.
     302 '''gatewaykit'''::
     303  If a specialized [FeddDownload#TheFederationKitfedkit fedkit] is needed for gateways, this specifies it.  Uneeded with the default fedkit.
     304 '''info_cache'''::
     305  Number of seconds to cache status information about sub-experiments.  See [FeddCommands#fedd_ftopo.py fedd_ftopo.py] and [FeddCommands#fedd_info.py fedd_info.py] descriptions for the data this covers.
    322306 '''log_level'''::
    323307  The level of logging to produce from this component.  One of `debug`, `info`, `warning`, `critical`, and `error`.  See the [http://www.python.org/doc/current/library/logging.html standard python logging system] for details.
     
    325309  Database that controlls the default mapping from testbed name to contact URI.
    326310 '''ns2topdl_uri'''::
    327   Contact point for using a remote experiment translator.  Generally this should be set to !http://users.isi.dertelab.net:23235 .
     311  Contact point for using a remote experiment translator.  Generally this should be set to !http://users.isi.deterlab.net:23235 .
    328312 '''repodir'''::
    329313  Directory where fedd can stage software for experiments.  Should be on an adequately sized file system with permissions that the fedd can access.  IN deciding size, consider the size of required software like fedkits and the software users might include in experiments.
    330314 '''repo_url'''::
    331315  The URL on which access controllers can collect staged software.  Should almost always be the URL of the experiment controller.
     316 '''routing'''::
     317  '''Experimental'''. Local program to supply static routes to the federated experiment.
    332318 '''store_url'''::
    333319  The URL on which access controllers can collect synchronization information.  Should almost always be the URL of the experiment controller.
     
    340326  present, no certificate path checking is done.  If this field is not present and a '''trusted_certs''' field is present in the [globals] section, the [globals] certificates will be used.
    341327 '''overrides'''::
    342    A comma separated list of fedids that can access any experiment.  Each fedid must include the '''fedid:''' prefix.
     328   '''Deprecated.''' A comma separated list of fedids that can access any experiment.  Each fedid must include the '''fedid:''' prefix.
    343329
    344330=== Splitter Options ===