Tries to follow the packaging guidelines from Fedora.
- Binary:
/usr/bin/consul
- Config:
/etc/consul.d/
- Shared state:
/var/lib/consul/
- Sysconfig:
/etc/sysconfig/consul
- WebUI:
/usr/share/consul/
Create the RPMs using one of the techniques outlined in the Build section below.
Pre-built packages are maintained via the Fedora Copr system. For more information, please see the duritong/consul repository on Copr.
There are a number of ways to build the consul
and consul-ui
RPMs:
- Manual
- Vagrant
- Docker
Each method ultimately does the same thing - pick the one that is most comfortable for you.
The version number is hardcoded into the SPEC, however should you so choose, it can be set explicitly by passing an argument to rpmbuild
directly:
$ rpmbuild --define "_version 0.6.3"
Build the RPM as a non-root user from your home directory:
-
Check out this repo. Seriously - check it out. Nice.
git clone <this_repo_url>
-
Install
rpmdevtools
andmock
.sudo yum install rpmdevtools mock
-
Set up your
rpmbuild
directory tree.rpmdev-setuptree
-
Link the spec file and sources.
ln -s $HOME/consul-rpm/SPECS/consul.spec $HOME/rpmbuild/SPECS/ find $HOME/consul-rpm/SOURCES -type f -exec ln -s {} $HOME/rpmbuild/SOURCES/ \;
-
Download remote source files.
spectool -g -R rpmbuild/SPECS/consul.spec
-
Spectool may fail if your distribution has an older version of cURL (CentOS 6.x, for example) - if so, use Wget instead.
VER=`grep Version rpmbuild/SPECS/consul.spec | awk '{print $2}'` URL='https://dl.bintray.com/mitchellh/consul' wget $URL/consul_${VER}_linux_amd64.zip -O $HOME/rpmbuild/SOURCES/consul_${VER}_linux_amd64.zip wget $URL/consul_${VER}_web_ui.zip -O $HOME/rpmbuild/SOURCES/consul_${VER}_web_ui.zip
-
Build the RPM.
rpmbuild -ba rpmbuild/SPECS/consul.spec
If you have Vagrant installed:
-
Check out this repo.
git clone https://github.com/tomhillable/consul-rpm
-
Edit
Vagrantfile
to point to your favourite box (Bento CentOS7 in this example).config.vm.box = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box"
-
Vagrant up! The RPMs will be copied to working directory after provisioning.
vagrant up
If you prefer building it with Docker:
-
Build the Docker image. Note that you must amend the
Dockerfile
header if you want a specific OS build (centos6
andcentos7
are currently included).docker build -t consul:build ./docker/centos7/
-
Run the build.
docker run -v $HOME/consul-rpms:/RPMS consul:build
-
Retrieve the built RPMs from
$HOME/consul-rpms
.
Alternatively, there is a docker compose file included with this repo that automates the process of building the Docker image and running commands.
-
Build with:
docker-compose run <centos6|centos7>
-
Retrieve build rpms from
./RPMS
.
Currently, the docker-compose services can be either centos6
or centos7
for
each respective OS version.
Three RPMs:
- consul server
- consul web UI
- consul-template
- Install the RPM.
- Put config files in
/etc/consul.d/
. - Change command line arguments to consul in
/etc/sysconfig/consul
.- Add
-bootstrap
only if this is the first server and instance.
- Add
- Start the service and tail the logs
systemctl start consul.service
andjournalctl -f
.- To enable at reboot
systemctl enable consul.service
.
- To enable at reboot
- Consul may complain about the
GOMAXPROCS
setting. This is safe to ignore; however, the warning can be supressed by uncommenting the appropriate line in/etc/sysconfig/consul
.
Config files are loaded in lexicographical order from the config-dir
. Some
sample configs are provided.
See the consul.io website.
Earlier verisons of this package used /etc/consul/
as the default
configuration directory. As of 0.7.2, the default directory was changed to
/etc/consul.d/
in order to align with the offcial Consul docuemntation. In
order to avoid breaking existing installations during upgrade, both of the
directories will be created during package install.