HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Central repository hosting various binaries/applications for different platforms/architectures

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
binarieshostingcentralarchitecturesapplicationsdifferentrepositoryforplatformsvarious

Problem

I would like to improve the automation and performance when managing VMs using Ansible. One of my use cases is to install custom software on a variety of operating systems i.e Red-Hat, Ubuntu, Centos. This software is distributed using single-file installers. For instance, installing a mySQL database on Red-Hat and Centos.

I recently learned about "repository managers" (or something similar). I don't know exactly where to look/learn more about what are the tools out there. I also don't know what the official terminology is.

This repository is ideally straightforward to use i.e, I just put a binary there, classify it with some tags[?] maybe like 64-bit, version 3.3, Centos.

Currently, I have this. But I don't really like hosting the binary on an NFS server

name: Get mySQL binary
command: "find {{ nfs }} -name \"*mysql*\""
register: mySQL_location 

name: Install mySQL
command: "{{mySQL_location.stdout}} --option 1 --option 2
become: yes


A typical use case would look like this

  • I want to install Software A on Centos



  • I use Ansible to get the appropriate OS specific version of Software A from a "central repository"



  • I use an Ansible module and specify version, OS, etc, and that downloads that binary (or binaries) to the VM. This should be fast since it will be over the local network, even for binaries of 100 MB+. Afterwards, Ansible installs it.



  • The Ansible role would be configurable to affect the installation settings, etc.



  • Next, I want to reuse the same role to easily do the same for, let's say Red-Hat



My goal is to have the Ansible playbooks be easily maintainable when a new version comes out, without, having to change anything in a playbook, just swap/add a new binary in the repository for a new version of Software A

I understand that the YUM package manager does this in a way, however, I am wondering what other options (if any) are out there.

Solution

Your scenario is a perfect use case for a binary repository manager. A BRM's primary feature is to act as a central storage system for your binaries, but there are many other features including:

  • Versioning



  • Tagging



  • Permission management



  • Logging/auditing



Using a BRM is more lightweight than a typical source code repository system such as Git or SVN. Those systems will have much more metadata than is necessary for binary files

I have personally used Artifactory by JFrog, but I have also heard many good things about Nexus.

Context

StackExchange DevOps Q#3278, answer score: 2

Revisions (0)

No revisions yet.