#
# Schedule software update for yum-based distributions (e.g. RedHat, CentOS)
# Will only update to the given package_version assumed to be found in the yum repository.
# If installed version is the same as package_version or newer, no action is taken.
#

body common control
{
      bundlesequence => { "system_software" };
}


bundle agent system_software
{
  classes:
      "update_hosts"    expression => "host1|host2";
      "update_schedule" expression => "Day27.Hr02.Min00_05";

  packages:
    update_hosts.update_schedule::
      "bash"
      comment               => "Make sure bash package is updated to right version",
      handle                => "package_bash_update",
      package_version       => "3.2-32.el5",
      package_architectures => { "x86_64" },
      package_policy        => "addupdate",
      package_select        => ">=",
      package_method        => yum_version;

}


body package_method yum_version
{
      package_changes => "bulk";
      package_list_command => "/bin/rpm -qa --qf '%{name} %{version}-%{release} %{arch}\n'";
      package_patch_list_command => "/usr/bin/yum check-update";

      package_list_name_regex    => "^(\S+?)\s\S+?\s\S+$";
      package_list_version_regex => "^\S+?\s(\S+?)\s\S+$";
      package_list_arch_regex    => "^\S+?\s\S+?\s(\S+)$";

      package_installed_regex => ".*";
      package_name_convention => "$(name)-$(version).$(arch)";

      package_patch_installed_regex => "^\s.*";
      package_patch_name_regex    => "([^.]+).*";
      package_patch_version_regex => "[^\s]\s+([^\s]+).*";
      package_patch_arch_regex    => "[^.]+\.([^\s]+).*";

      package_add_command    => "/usr/bin/yum -y install";
      package_update_command => "/usr/bin/yum -y update";
      package_delete_command => "/bin/rpm -e --nodeps --allmatches";
      package_verify_command => "/bin/rpm -V";
}
