(R)?ex Deployment & Configuration Management

News

2019-07-02
Deprecating official Rex packages

As part of our efforts to simplify maintenance around RexOps projects, we have decided to stop building Rex packages on our side. We recommend relying on OS packages maintained by the various distributions in their respective upstream repositories, or to install Rex from CPAN.

2019-06-09
Post-migration updates & clean-up

Over the course of the past weeks many clean-ups have been done, reaping the benefits provided by our new Statocles-based site:

2019-05-19
New site engine for rexify.org

After months of work on a new site backend, we reached the MVP today for our site to be switched over to a new engine: from now on, our site will be maintained using the static site generator Statocles.

Conferences

2016-06-21

Need Help?

Rex is a pure open source project, you can find community support in the following places:

Professional support is also available.

» Home » Docs » Guides » Working with packages

Working with packages

If you want to install or remove packages on your server Rex gives you a few functions to do this. Rex tries to guess the right package provider based on the platform Rex connects to. If you want to use a special package provider (for example, if you're using SunOS and want to use OpenCSW) you can define the package provider with package_provider_for $os => $provider_name.

Installing a Package

To install a package you can use the pkg function.

⁠task "prepare", "server1", sub {
⁠  pkg "apache2", ensure => "present";
⁠};

If you want to install multiple packages you can do it by providing an array reference.

⁠task "prepare", "server1", sub {
⁠  pkg [qw/apache2 vim php5/], ensure => "present";
⁠};

If you want to install a special version of a package you just need to specify the version option.

⁠task "prepare", "server1", sub {
⁠  pkg "apache2", ensure => "2.2.4";
⁠};

Removing a Package

If you don't need a package anymore you can remove it with the remove function.

⁠task "prepare", "server1", sub {
⁠  pkg "apache2", ensure => "absent";
⁠};

Adding a Package Repository

Sometimes you have to add custom repositories to your Server. This can be done with the repository function. In the following code block you'll see an example for Debian and CentOS.

Debian

⁠task "prepare", "server2", sub {
⁠
⁠  # add a repository for debian/ubuntu  repository
⁠    add        => "myrepo",
⁠    url        => "http://foo.bar/repo",
⁠    distro     => "squeeze",
⁠    repository => "stable";
⁠};

CentOS

⁠task "prepare", "server2", sub {
⁠
⁠  # add a repository for redhat/centos  repository
⁠    add => "myrepo",
⁠    url => "http://foo.bar/repo";
⁠};

After you've added a new repository you need to run update_package_db to update the package database so that you can install packages from these repositories.

⁠task "prepare", "server2", sub {
⁠
⁠  # add a repository for redhat/centos  repository
⁠    add => "myrepo",
⁠    url => "http://foo.bar/repo";
⁠
⁠  # update package database  update_package_db;
⁠};

Supported Package Providers

Rex supports the following package providers:

Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.ô.-   Disclaimer