Show Table of Contents
21.3. Remedying Drift
To remediate drift, define an alert in the UI and upload a CLI script which can be run, automatically, whenever drift is detected. All the script has to do is deploy the backup bundle to the resource, and there are several different ways to do that.
This example goes through all the basic steps: it pulls the resource information from the alert, searches for the bundle version, and then deploys it to the resource. One nifty thing about this script is that it writes a log file, capturing the alert information that triggered the remediation.
This script can be uploaded directly when the alert definition is created. Before uploading the script, be sure to set the variables to the bundle destination and bundle version that you created when the drift definition was set up.
// - The 'alert' variable is seeded by the alert sender // SET THESE VARIABLES var bundleDestinationName = 'drift destination' var bundleVersion = 1.0 var logFile = '/tmp/alert-cli-demo/logs/alert-' + alert.id + '.log' // Log what we're doing to a file tied to the fired alert id // var e = exporter e.setTarget( 'raw', logFile ) // Dump the alert // e.write( alert ) // get a proxy for the alerted-on Resource // var alertResource = ProxyFactory.getResource(alert.alertDefinition.resource.id) // Dump the resource // e.write( " " ) e.write( alertResource ) // Remediate file // Find the Bundle Destination // var destCrit = new BundleDestinationCriteria() destCrit.addFilterName( bundleDestinationName ) var result = BundleManager.findBundleDestinationsByCriteria( destCrit ) var dest = result.get( 0 ) // Find the Bundle Version // var versionCrit = new BundleVersionCriteria() versionCrit.addFilterVersion( bundleVersion ) result = BundleManager.findBundleVersionsByCriteria( versionCrit ) var ver = result.get( 0 ) // Create a new Deployment for the bundle version and the destination // var deployment = BundleManager.createBundleDeployment(ver.getId(), dest.getId(), 'remediate drift', new Configuration()) // Schedule a clean deploy of the deployment. This will wipe out the edited file and lay down a clean copy // BundleManager.scheduleBundleDeployment(deployment.getId(), true) e.write( " " ) e.write( "REMEDIATION COMPLETE!" )

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.