Jira Sandbox
A Jira Sandbox system for development and testing purposes.
Requirements Overview
-
The Jira installation must be done by a script so the setup is reproducible at any time.
-
No Reverse Proxy needed → so there is no need for Apache or nginx
-
No HTTPS needed
-
No need to run multiple Jira instances in parallel
Quality Goals
-
There is no need for the whole setup to be Infrastructure as Code. Setup stepts inside Jira can be done manually (through the web ui). The setup of Jira itself (application server, etc) should follow an Infrastructure as Code approach.
Install
In order to run this project, the following dependencies must be met:
-
Install Virtualbox and Vagrant
-
Install the Vagrant Plugin "vagrant-vbguest" using
vagrant plugin install vagrant-vbguest
-
Usage
Category | Info |
---|---|
Box Image |
bento/fedora-34 |
Provider |
Virtualbox |
VM-Name & Hostname |
jira-sandbox |
User (Password) |
vagrant (vagrant) |
Port Range for this VM |
8080 |
System Requirements |
CPUs = 1, RAM = 4096 MB |
Use this Vagrantbox
-
Start the Vagrantbox using
vagrant up
from the directory containing the Vagrantfile -
Start and stop the jira instance by using
src/main/jira-sandbox/services/jira-up.sh
andsrc/main/jira-sandbox/services/jira-down.sh
from inside the Vagrantbox (get inside by usingvagrant ssh
from the directory containing the Vagrantfile) -
Shutdown the Vagrantbox using
vagrant halt
from the directory containing the Vagrantfile -
Remove the Vagrantbox using
vagrant destroy -f
from the directory containing the Vagrantfile
Provisioning
This Vagrantbox is provisioned on (initial) startup. To provision the Vagrantbox again, run vagrant up --provision on a stopped environment and vagrant provision or vagrant reload --provision on a running environment.
Typically this Jira Sandbox uses an evaluation license which expires after 30 days. |
Building Block View / Whitebox Overall System
The actual Jira Setup follows the Atlassian Guide "Installing Jira applications on Linux from Archive File".
-
Jira is run by user "vagrant"
-
Jira Installation Directory =
/home/vagrant/jira/jira-runtime
-
Jira Home Directory =
/home/vagrant/jira/jira-home
(this is where Jira application data like logs, search indexes and files will be stored) -
Jira Database = H2DB
-
The setup
-
The Jira setup uses a H2DB. So there are no dependencies to the outside other than an internet connection to download the Jira Software archive from the Atlassian website.
-
To set up a new Jira Instance just run
src/main/jira-sandbox/provision/jira-setup.sh
. Make sure you first delete the existing Jira Instance or copy / archive it to another location (and then delete the existing instance). By archiving the instance you can restore this setup rather easily.-
This setup step increases the default memory settings for Jira (following the information from https://confluence.atlassian.com/adminjiraserver0817/increasing-jira-application-memory-1071816583.html)
-
-
For a complete setup it is needed to go through the complete Jira Setup Wizard (via Browser) → So the Jira Setup ist not completely Infrastructure as Code.
-
-
Jira is not run as a service → From Atlassian Guide "Installing Jira applications on Linux from Archive File"
-
You will start your Jira application by running the start-jira.sh file in your Jira installation directory.
-
We recommend creating a dedicated user to run Jira. This user must have full read, write and execute access to the installation directory and home directory.
-
Jira will need to be restarted manually if your server is restarted.
-
Services
The following services are up and running when the Vagrantbox is started (and provisioned).
Service | URL | User (Password) |
---|---|---|
Jira Software |
http://localhost:8080 (forwarded from 8080 in Vagrantfile) |
none (the setup wizard creates the initial admin user) |
Architecture Decisions
-
This Vagrantbox is just a proof-of-concept and will turn into a dedicated project sometime in the future.
-
This setup does not use Docker because the target environment does not properly support Docker. So when porting this configuration to the target environment we avoid migrating the setup from Docker to non-Docker.