Code Monkey home page Code Monkey logo

atlassian-dc-deployments-automation's Introduction

Atlassian Data Center Installation Automation

This repository is a suite of Ansible roles, playbooks and support scripts to automate the installation and maintenance of Atlassian Data Center products in cloud environments.

On this page:

[TOC]

Usage

Configuring Data Center nodes on cloud deployments

The usual scenario for usage as part of a cloud deployment is to invoke the script as part of post-creation actions invoked while a new product node is being brought up. In the case of AWS, this would usually be done by cfn-init/user-data. For example, the Jira quickstart template creates a per-node launch configuration that fetches this repository and runs the appropriate AWS/product playbook, which invokes the appropriate roles.

In practice, the Ansible roles require some information about the infrastructure that was deployed (e.g. RDS endpoint/password). The way this is currently achieved (on AWS) is that have the CloudFormation template dump this information into the file /etc/atl as RESOURCE_VAR=<resource> lines. This can be then sourced as environment variables to be retrieved at runtime. See the helper-script bin/ansible-with-atl-env and the corresponding groups_vars/aws_node_local.yml var-file.

Customizing your deployment

To customise playbook behaviour, you can fork this repository and edit it as needed. However, for one-off tasks you can also override the default and calculated settings with special values. To do this, provide command-line overrides to ansible-playbook.

The most likely use-case for this is to download a custom product distribution for testing (for example, a pre-release version of Jira). If you are running ansible-playbook directly, the command for this would look like the following:

ansible-playbook \
    -e atl_product_download_url=http://s3.amazon.com/atlassian/jira-9.0.0-PRE-TEST.tar.gz \
    -e atl_use_system_jdk=true \
    -e atl_download_format=tarball \
    \
    -i inv/aws_node_local aws_jira_dc_node.yml

You can also do this on a CloudFormation template where the stack details are in /etc/atl. On such templates, the variable ATL_DEPLOYMENT_REPOSITORY_CUSTOM_PARAMS is added to the ansible-playbook parameters in bin/ansible-with-alt-env. In this case you need to set it to: ATL_DEPLOYMENT_REPOSITORY_CUSTOM_PARAMS="-e atl_product_download_url=http://s3.amazon.com/atlassian/jira-9.0.0-PRE-TEST.tar.gz -e atl_use_system_jdk=true -e atl_download_format=tarball"

To set the same parameters in the AWS Quick Starts for Jira Data Center, Confluence Data Center, and Bitbucket Data Center, enter them in the Custom command-line parameters for Ansible field:

-e atl_product_download_url=http://s3.amazon.com/atlassian/jira-9.0.0-PRE-TEST.tar.gz -e atl_use_system_jdk=true -e atl_download_format=tarball

Other customizable parameters

For more deployment customization options, consult the following files for parameters you can override:

More customizable parameters are defined in specific roles -- specifically, in the role's defaults/main.yml file. Most of these parameters use the atl_ prefix. You can use the following Bitbucket code search query to find them:

repo:dc-deployments-automation repo:dc-deployments-automation path:*/defaults/main.yml atl

Custom files

  • jira-config.properties: If this file exists in the shared home (default: /media/atl/jira/shared/) then it will be copied to the Jira local home directory (default: /var/atlassian/application-data/jira/). Note that this only happens on node creation; if you create or update the shared file it will need to be copied manually.

Development and testing

See Development for details on setting up a development environment and running tests.

Roles philosophy

This suite is intended to consist of many small, composable roles that can be combined together into playbooks. Wherever possible, roles should be product-agnostic (e.g. downloads) and platform-agnostic. Functions that are product-specific or platform-specific are split off into separate roles.

Roles should be reasonably self-contained, with sensible defaults configured in /roles/<role>/defaults/main.yml. Like all playbook parameters, you can override them at runtime.

Some roles implicitly depend on other variables beind defined elsewhere. For example, the jira_config role depends on the atl_cluster_node_id var being defined; on AWS this is provided by the aws_common role, which should be run first.

Ansible layout

  • Helper scripts are in bin/. In particular the bin/ansible-with-atl-env wrapper is of use during AWS node initialisation. Refer to the Usage section for more information.
  • Inventory files are under inv/. For AWS cfn-init the inventory inv/aws_node_local inventory is probably what you want.
    • Note that this expects the environment to be setup with infrastructure information. Refer to the Usage section for more information.
  • Global group vars loaded automatically from group_vars/<group>.yml. In particular note group_vars/aws_node_local.yml which loads infrastructure information from the environment.
  • Roles are defined in roles/
    • Platform specific roles start with <platform-shortname>_..., e.g. roles/aws_common/.
    • Similarly, product-specific roles should start with <product>_....

Reporting issues

If you find any bugs in this repository, or have feature requests or use cases for us, please raise them in our public Jira project.

License

Copyright © 2019 Atlassian Corporation Pty Ltd. Licensed under the Apache License, Version 2.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.