Public | Automated Build

Last pushed: 21 hours ago
Short Description
Spacewalk in Docker (without systemd)
Full Description

Spacewalk

How to run in Docker

At first you need installed postgresql. Easy way to use Docker image for creating database:
(PostreSQL has to have installed postgresql-pltcl)

docker run -d --name spacewalk-postgresql.docker -h spacewalk-postgresql.docker \
        -e POSTGRES_PASSWORD=password postgres:9.4
docker exec spacewalk-postgresql.docker /bin/bash -c \
        "apt update && apt install postgresql-pltcl-9.4 -y"
docker restart spacewalk-postgresql.docker

Now you can run installation of Spacewalk following command:

docker run -it --link spacewalk-postgresql.docker:postgresql-host \
         -e POSTGRES_PASSWORD=password pajinek/docker-spacewalk:nightly

Available versions:

  • Spacewalk Nightly PostgreSQL - spacewalk:nightly
  • Spacewalk 2.7 PostgreSQL - spacewalk:2.7 or spacewalk:latest
  • Spacewalk 2.6 PostgreSQL - spacewalk:2.6
  • Spacewalk 2.5 PostgreSQL - spacewalk:2.5

How to run by Ansible

The way how to install Spacewalk nightly that takes 3 minute.

At first step you have to create file "config/hosts.ini" with list of hostname, where Spacewalk will be installed by Ansible. Only plain text format in hosts.ini:

[spacewalk]
spacewalk.example.com

[proxy]
proxy.s1.example.com host=spacewalk.example.com
proxy.s2.example.com host=spacewalk.example.com

[client]
client1.s1.example.com host=proxy.s1.example.com
client2.s1.example.com host=proxy.s1.example.com
server1.s2.example.com host=proxy.s2.example.com
server2.s2.example.com host=proxy.s2.example.com

Installation is realized in LXC container by Docker's images and due to it is needed to have installed Docker service on host(s) or you can run following script which prepares enviroment:

ansible-playbook -i config/hosts.ini spacewalk.yaml -tags "prepare"

If system is prepared, run this Ansible script that will install one instance Docker with postgresql and one with Spacewalk latest version.

ansible-playbook -i config/hosts.ini spacewalk.yaml

If you want to install old version or nightly version, you can define image for installation following form

ansible-playbook -i config/hosts.ini spacewalk.yaml -e "docker_image=pajinek/docker-spacewalk:2.6"
ansible-playbook -i config/hosts.ini spacewalk.yaml -e "docker_image=pajinek/docker-spacewalk:nightly"

After installation is completed, go to fill data for first login by webui.
If you login to Spacewalk create needed channels and distribution mapping for your systems.
In file group_vars/all change following variables by filled data for authentization.

spacewalk_user: "admin"
spacewalk_pass: "passadmin"

And now you can configure proxy and register clients to spacewalk through
these proxies.

ansible-playbook -i config/hosts.ini proxy.yaml
ansible-playbook -i config/hosts.ini client.yaml
Docker Pull Command
Owner
pajinek
Source Repository

Comments (2)
pajinek
17 days ago

It is better to use some release image than nightly. I switched latest to latest version (not nightly).

philipmather
5 months ago

Not currently working? Once started visting the site produces...
INFO: Server startup in 8872 ms
2017-04-12 15:28:23,035 [ajp-bio-8009-exec-1] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolling back
com.redhat.rhn.common.db.WrappedSQLException: ERROR: function logging.clear_log_id() does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 15
at com.redhat.rhn.common.translation.SqlExceptionTranslator.postgreSqlException(SqlExceptionTranslator.java:54)