Jan Gehring > Rex-0.43.2 > Rex::Commands::Pkg

Download:
Rex-0.43.2.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  4
Open  0
View/Report Bugs
Source   Latest Release: Rex-0.55.1

NAME ^

Rex::Commands::Pkg - Install/Remove Software packages

DESCRIPTION ^

With this module you can install packages and files.

SYNOPSIS ^

 install file => "/etc/passwd", {
                     source => "/export/files/etc/passwd"
                 };
 
 install package => "perl";

EXPORTED FUNCTIONS ^

install($type, $data, $options)

The install function can install packages (for CentOS, OpenSuSE and Debian) and files.

installing a package (This is only supported on CentOS, OpenSuSE and Debian systems.)
 task "prepare", "server01", sub {
    install package => "perl";
    
    # or if you have to install more packages.
    install package => [ 
                           "perl",
                           "ntp",
                           "dbus",
                           "hal",
                           "sudo",
                           "vim",
                       ];
 };
installing a file

This is deprecated since 0.9. Please use File file instead.

 task "prepare", "server01", sub {
    install file => "/etc/passwd", {
                        source => "/export/files/etc/passwd",
                        owner  => "root",
                        group  => "root",
                        mode   => 644,
                    };
 };
installing a file and do somthing if the file was changed.
 task "prepare", "server01", sub {
    install file => "/etc/httpd/apache2.conf", {
                        source    => "/export/files/etc/httpd/apache2.conf",
                        owner     => "root",
                        group     => "root",
                        mode      => 644,
                        on_change => sub { say "File was modified!"; }
                    };
 };
installing a file from a template.
 task "prepare", "server01", sub {
    install file => "/etc/httpd/apache2.tpl", {
                        source    => "/export/files/etc/httpd/apache2.conf",
                        owner     => "root",
                        group     => "root",
                        mode      => 644,
                        on_change => sub { say "File was modified!"; },
                        template  => {
                                        greeting => "hello",
                                        name     => "Ben",
                                     },
                    };
 };
remove($type, $package, $options)

This function will remove the given package from a system.

 task "cleanup", "server01", sub {
    remove package => "vim";
 };
update_system

This function do a complete system update.

For example apt-get upgrade or yum update.

 task "update-system", "server1", sub {
    update_system;
 };
installed_packages

This function returns all installed packages and their version.

 task "get-installed", "server1", sub {
    
     for my $pkg (installed_packages()) {
        say "name     : " . $pkg->{"name"};
        say "  version: " . $pkg->{"version"};
     }
     
 };
is_installed

This function tests if $package is installed. Returns 1 if true. 0 if false.

 task "isinstalled", "server01", sub {
    if( is_installed("rex") ) {
       say "Rex is installed";
    }
    else {
       say "Rex is not installed";
    }
 };
update_package_db

This function updates the local package database. For example, on CentOS it will execute yum makecache.

 task "update-pkg-db", "server1", "server2", sub {
    update_package_db;
    install package => "apache2";
 };
repository($action, %data)

Add or remove a repository from the package manager.

For Debian: If you have no source repository, or if you don't want to add it, just remove the source parameter.

 task "add-repo", "server1", "server2", sub {
    repository "add" => "repository-name",
         url        => "http://rex.linux-files.org/debian/squeeze",
         distro     => "squeeze",
         repository => "rex",
         source     => 1;
 };

For ALT Linux: If repository is unsigned, just remove the sign_key parameter.

 task "add-repo", "server1", "server2", sub {
    repository "add" => "altlinux-sisyphus",
         url        => "ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus",
         sign_key   => "alt",
         arch       => "noarch, x86_64",
         repository => "classic";
 };

For CentOS, Mageia and SuSE only the name and the url are needed.

 task "add-repo", "server1", "server2", sub {
    repository add => "repository-name",
         url => 'http://rex.linux-files.org/CentOS/$releasever/rex/$basearch/';
     
 };

To remove a repository just delete it with its name.

 task "rm-repo", "server1", sub {
    repository remove => "repository-name";
 };

You can also use one call to repository to add repositories on multiple platforms:

 task "add-repo", "server1", "server2", sub {
   repository add => myrepo => {
      Ubuntu => {
         url => "http://foo.bar/repo",
         distro => "precise",
         repository => "foo",
      },
      Debian => {
         url => "http://foo.bar/repo",
         distro => "squeeze",
         repository => "foo",
      },
      CentOS => {
         url => "http://foo.bar/repo",
      },
   };
 };
package_provider_for $os => $type;

To set an other package provider as the default, use this function.

 user "root";
     
 group "db" => "db[01..10]";
 package_provider_for SunOS => "blastwave";
    
 task "prepare", group => "db", sub {
     install package => "vim";
 };

This example will install vim on every db server. If the server is a Solaris (SunOS) it will use the blastwave Repositories.

syntax highlighting: