This repository contains code for creating all of the infrastructure needed by the Boss repository.
Components:
- docs --- Instructions and tutorials
- bin --- Scripts and utilities for building / working with the BOSS infrastructure
- lib --- Python libraries containing common code used by scripts and utilities
- packer --- Packer configurations for building VM images populated with Salt
- salt_stack --- SaltStack formulas for installing and configuring software
- cloud_formation --- Configuration files creating AWS CloudFormation templates
- vault --- Vault private key / token storage and policies used for initial configuration of a Vault instance.
For full instructions on how to configure everything needed to get a Boss instance running, read the Install Guide.
The boss-manage scripts and utilities make use of a minimal number of 3rd party Python3 libraries. To install them run the following command.
pip3 install -r requirements.txt
When building new AWS AMIs with Packer, SaltStack expects the boss and boss-tools repositories to be checked out to specific directories within the SaltStack directory structure.
Follow the directions in the Submodules help file to correctly setup the submodules of boss-manage.
Currently the code that uses SSH tunnels creates SSH sessions is written
expecting an SSH client ssh
to be in the system path.
When launching CloudFormation configurations the selected keypair will be used
when connecting to the Vault server. To make sure these connections are
successful make sure that the private key for the selected keypair exists as
~/.ssh/<keypair>.pem
and has file permissions 400
/ -r--------
.
AWS API keys are loaded using the boto3 profile name given in the Bosslet configuration passed to the script / utility being executed.
All boss-manage code makes use of a single configuration object, called a bosslet config. The configuration object is based on a file created by the user and containing all of the information describing the Boss instance that should be created or acted upon.
For more information see config/README.md
Use or redistribution of the Boss system in source and/or binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code or binary forms must adhere to the terms and conditions of any applicable software licenses.
- End-user documentation or notices, whether included as part of a redistribution or disseminated as part of a legal or scientific disclosure (e.g. publication) or advertisement, must include the following acknowledgement: The Boss software system was designed and developed by the Johns Hopkins University Applied Physics Laboratory (JHU/APL).
- The names "The Boss", "JHU/APL", "Johns Hopkins University", "Applied Physics Laboratory", "MICrONS", or "IARPA" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact BossAdmin@jhuapl.edu.
- This source code and library is distributed in the hope that it will be useful, but is provided without any warranty of any kind.