Ansible Inventory Project for the CD Platform Reference Implementation

This project contains the Ansible inventory for the Continuous Delivery (CD) Platform reference implementation. The CD Platform supports more than 90 Scrum/Agile teams working on IT projects at the Dutch Police, streamlining lifecycle management (LCM) and maintenance of key tools such as Jira, Confluence, Bitbucket, Nexus, SonarQube, and Jenkins.
GitLab

pipeline status Latest Release

This a GitLab project that serves as the Ansible inventory for the reference implementation for the CD Platform of Dutch Police.

Products

ProductLevelLinkDescription
SonarQube IIIhttps://sh.1.1.1.3.nip.io/sonarqube/ default admin with pw admin or akaufman
Nexus IVhttps://sh.1.1.1.3.nip.io/nexus/ admin with pw secret or akaufman
Jira IIhttps://sh.1.1.1.3.nip.io/jira/ admin with pw secret2
Bitbucket IIhttps://sh.1.1.1.3.nip.io/bitbucket/ 
Confluence IIhttps://sh.1.1.1.3.nip.io/confluence/ admin with pw secret2
Jenkins Ihttps://sh.1.1.1.3.nip.io/jenkins/ admin with pw supersecret
Sites IIhttps://sh.1.1.1.3.nip.io/sites/ Host static sites using Apache
AWX Ihttps://awx.1.1.1.3.nip.io/  1Open Source Ansible Tower. AWX is very much work in progress, see README  for info. Login admin with pw secret
Guacamole Ihttps://sh.1.1.1.3.nip.io/desktop/ Use Docker based desktops in your browser.

1. AWX doesn’t support changing web context - it needs to run from root. 2. Jira and Confluence setup cannot be automated. You have to use the wizard to setup the database, admin account etc.

Capability Levels

LevelDescription
I - Basic InstallAutomated application provisioning and configuration management
II - Full LifecycleUpgrade,rollback, rollforward, backup, restore
III - InsightsBasic monitoring, JMX, etc
IV - Project EnvironmentManaged project creation, access etc

This repository includes a number of supporting products / components that are typically used in conjunction with the products above:

ComponentPurpose
reverse-proxy Reverse proxy server
postgresql Database for SonarQube, Jira, Bitbucket, Confluence
cacerts Import certificates, CA bundles in keystores
lcm Support LCM operations install, upgrade, rollback, rollforward
lvm Create, size, manage logical volumes
monit Basic monitoring e.g. disk space, CPU, swap etc
postfix Mailrelay
proxy Proxy server based on Squid
swid Create SWID tags

The repository also includes plays / roles for test and development purposes. See for example

This repository is created and maintained as a monolithic repository. External roles from Galaxy and GitHub are copied into this repository. Aside from that it tries to follow Ansible Best Practices  as much as possible.

Getting Started

Install Ansible, Vagrant, VirtualBox on Ubuntu 18.04 machine. nip.io  is used to DNS entries to IP addresses in the development environment.

Ansible

Add the Ansible repository and install Ansible  .

sudo add-apt-repository ppa:ansible/ansible
sudo apt-get install ansible

This repository has been used with:

  1. Ansible 2.8.3 and Python 2.7.15.
  2. Ansible 2.10.3 and Python 3.6.9.

Vagrant

sudo wget https://releases.hashicorp.com/vagrant/2.2.6/vagrant_2.2.6_x86_64.deb 


sudo dpkg -i vagrant_2.2.6_x86_64.deb

VirtualBox

sudo apt-get install virtualbox

Setup project directory

Git clone this repository for example to ~/ansible.

git clone cd ~/ansible

Note: if you run a vagrant command for example vagrant status a Ansible Vault  password stored in the file ~/ansible/vpass with content secret in root of the repository directory. This is used by Ansible vault for encrypting and decrypting secrets  .

Provision a first service

To get started, create for example the bitbucket service. For this you will also need the proxy node and the db node. So the command becomes

vagrant up proxy db bitbucket

The db node contains the PostgreSQL database used by Bitbucket. The proxy has a Apache2 reverse proxy server that will be used to access Bitbucket using self-signed certificates.

Note: the proxy node also includes a forward proxy server based on Squid. If you want to use this forward proxy you can enable it by removing proxy_skip of by setting it to false as shown below in proxy.yml](group_vars/all/proxy.yml).

proxy_skip: false # remove / false to enable forward proxy

Provision

Additionally create other nodes shown below. At a minimum you will need the proxy and postgresql node.

NodeService(s)LinkComments
proxyForward and reverse proxy, NFS server, OpenDJ server, Mailrelay
dbPostgreSQL server
oracleOracle Database 12c Enterprise EditionSee role  for more information.
sonarqubeSonarQube serverhttps://sh.1.1.1.3.nip.io/sonarqube/ default admin with pw admin or akaufman
nexusNexushttps://sh.1.1.1.3.nip.io/nexus/ admin with pw secret or akaufman
sitesStatic “dimension” sitehttps://sh.1.1.1.3.nip.io/dimension/ admin with pw supersecret
jenkinsJenkinshttps://sh.1.1.1.3.nip.io/jenkins/ admin with pw supersecret
confluenceConfluencehttps://sh.1.1.1.3.nip.io/confluence/ admin with pw secret
jiraJirahttps://sh.1.1.1.3.nip.io/jira/ admin with pw secret
bitbucketBitbuckethttps://sh.1.1.1.3.nip.io/bitbucket/ admin with pw secret
awxAWXhttps://awx.1.1.1.3.nip.io/ 
bastionGuacamolehttps://sh.1.1.1.3.nip.io/desktop/ 

LDAP accounts

AccountPasswordRole
akaufmansecretsadmin

Accounts en groups are in configured in host_vars/proxy.yml  .

To provision a node use standard Vagrant commands see vagrant --help for example to provision SonarQube for a first time:

    vagrant up proxy db sonarqube

To run the Ansible provisioner after nodes have been created using vagrant up you use vagrant provision <node>. See vagrant --help for more information.

LDAP

The proxy node includes a simple LDAP server based on OpenDJ. If you want to connect to the LDAP directory using a tool like Apache Directory Studio  use for example ldap://1.1.1.3:389 and cn=admin with password secret.

License

MIT License.



Last modified October 17, 2025: code with project attribute C2-578 (d84a5ee)