6.6.6.7. Including Macros in your Configuration Files

6.6.6.7. Including Macros in your Configuration Files

Being able to store and share identical configurations is useful, but what if you have many variations of the same configuration file? What do you do if you have configuration files that differ only in system-specific details, such as hostname and MAC address?

In traditional file management, you would be required to upload and distribute each file separately, even if the distinction is nominal and the number of variations is in the hundreds or thousands. RHN addresses this by allowing the inclusion of macros, or variables, within the configuration files it manages for Provisioning-entitled systems. In addition to variables for custom system information, the following standard macros are supported:

To use this powerful feature, either upload or create a configuration file through the Configuration Channel Details page. Then, open its Configuration File Details page and include the supported macros of your choosing. Ensure that the delimiters used to offset your variables match those set in the Macro Start Delimiter and Macro End Delimiter fields and do not conflict with other characters in the file. The delimiters must be two characters in length and cannot contain the percent (%) symbol.

As an example, you may have a file applicable to all of your servers that differs only in IP address and hostname. Rather than manage a separate configuration file for each server, you may create a single file, such as server.conf, with the IP address and hostname macros included, like so:

	 hostname={@ rhn.system.hostname @} ip_address={@ rhn.system.net_interface.ip_address(eth0) @} 
      

Upon delivery of the file to individual systems, whether through a scheduled action in the RHN website or at the command line with the Red Hat Network Configuration Client (rhncfg-client), the variables will be replaced with the hostname and IP address of the system, as recorded in RHN's System Profile. In the above configuration file, for example, the deployed version resembles the following:

         hostname=test.example.domain.com ip_address=177.18.54.7 
      

To capture custom system information, insert the key label into the custom information macro (rhn.system.custom_info). For instance, if you developed a key labeled "asset" you can add it to the custom information macro in a configuration file to have the value substituted on any system containing it. The macro would look like this:

         asset={@ rhn.system.custom_info(asset) @} 
      

Upon deployment of the file to a system containing a value for that key, the macro gets translated, resulting in a string similar to the following:

         asset=Example#456 
      

To include a default value, for instance if one is required to prevent errors, you can append it to the custom information macro, like so:

         asset={@ rhn.system.custom_info(asset) = 'Asset #' @} 
      

This default is overridden by the value on any system containing it. For instructions on developing custom system information keys, refer to Section 6.4.8, “Custom System Info — .

Using the Red Hat Network Configuration Manager (rhncfg-manager) will not translate or alter files, as that tool is system agnostic — rhncfg-manager does not depend on system settings. Binary files cannot be interpolated.