|
NAMERex::Commands::Pkg - Install/Remove Software packages DESCRIPTIONWith this module you can install packages and files. SYNOPSIS pkg "somepkg",
ensure => "present";
pkg "somepkg",
ensure => "latest",
on_change => sub {
say "package was updated.";
service someservice => "restart";
};
pkg "somepkg",
ensure => "absent";
EXPORTED FUNCTIONSpkg($package [, %options])Since: 0.45 Use this resource to install or update a package. This resource will generate reports. pkg "httpd",
ensure => "latest", # ensure that the newest version is installed (auto-update)
on_change => sub { say "package was installed/updated"; };
pkg "httpd",
ensure => "absent"; # remove the package
pkg "httpd",
ensure => "present"; # ensure that some version is installed (no auto-update)
pkg "httpd",
ensure => "2.4.6"; # ensure that version 2.4.6 is installed
pkg "apache-server", # with a custom resource name
package => "httpd",
ensure => "present";
install($type, $data, $options)The install function can install packages (for CentOS, OpenSuSE and Debian) and files. If you need reports, please use the pkg() resource.
This function supports the following hooks:
remove($type, $package, $options)This function will remove the given package from a system. task "cleanup", "server01", sub {
remove package => "vim";
};
update_systemThis function does a complete system update. For example apt-get upgrade or yum update. task "update-system", "server1", sub {
update_system;
};
If you want to get the packages that where updated, you can use the on_change hook. task "update-system", "server1", sub {
update_system
on_change => sub {
my (@modified_packages) = @_;
for my $pkg (@modified_packages) {
say "Name: $pkg->{name}";
say "Version: $pkg->{version}";
say "Action: $pkg->{action}"; # some of updated, installed or removed
}
};
};
Options for update_system
installed_packagesThis 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_installedThis 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_dbThis 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",
key_url => "http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO"
distro => "squeeze",
repository => "rex",
source => 1;
};
To specify a key from a file use key_file => '/tmp/mykeyfile'. To use a keyserver use key_server and key_id. 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 another 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.
|