All Projects → mesosphere → dcos-vagrant-box

mesosphere / dcos-vagrant-box

Licence: Apache-2.0 license
Vagrant box packer for building boxes for dcos-vagrant

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to dcos-vagrant-box

Dcos
DC/OS - The Datacenter Operating System
Stars: ✭ 2,316 (+4188.89%)
Mutual labels:  dcos, dcos-testing-guild
dcos-launch
Turn-key deployments of DC/OS on AWS (template and onprem), Azure, and GCE
Stars: ✭ 16 (-70.37%)
Mutual labels:  dcos, dcos-testing-guild
dklb
Expose Kubernetes services and ingresses through EdgeLB.
Stars: ✭ 13 (-75.93%)
Mutual labels:  dcos
mesos-utils
Utilities for building distributed systems on top of mesos
Stars: ✭ 24 (-55.56%)
Mutual labels:  dcos
dcos-oauth
DC/OS OAuth Service (only used up to DC/OS version 1.12)
Stars: ✭ 22 (-59.26%)
Mutual labels:  dcos
marathon-slack
Integration for Marathon's Event Bus with Slack
Stars: ✭ 42 (-22.22%)
Mutual labels:  dcos
container-service-discovery
Service Discovery in Container Orchestration Frameworks on AWS
Stars: ✭ 45 (-16.67%)
Mutual labels:  dcos
dcos-mesos-modules
Mesos Modules used in DC/OS
Stars: ✭ 16 (-70.37%)
Mutual labels:  dcos
dcos-k8s-rust-skaffold-demo
A demo of pipelining Rust application development to Kubernetes on DC/OS with Skaffold.
Stars: ✭ 40 (-25.93%)
Mutual labels:  dcos
etcd-top
etcd realtime workload analyzer
Stars: ✭ 34 (-37.04%)
Mutual labels:  dcos
cd-demo
A continuous delivery demo using Jenkins on DC/OS.
Stars: ✭ 36 (-33.33%)
Mutual labels:  dcos
reactive-graphql
A GraphQL implementation based around RxJS, very well suited for client side only GraphQL usage
Stars: ✭ 58 (+7.41%)
Mutual labels:  dcos
dcos-net
A networking layer of DC/OS
Stars: ✭ 44 (-18.52%)
Mutual labels:  dcos
mesos-deb-packaging
Mesos package for Debian, Ubuntu, CentOS, RHEL, and Fedora
Stars: ✭ 58 (+7.41%)
Mutual labels:  dcos
ansible-dcos
[DEPRECATED] Please consider using the Ansible Roles for DC/OS maintained by the Mesosphere SRE team
Stars: ✭ 37 (-31.48%)
Mutual labels:  dcos
docker-mesos-marathon-screencast
The scripts used in the Docker Clustering on Mesos with Marathon screencast.
Stars: ✭ 51 (-5.56%)
Mutual labels:  dcos
microservices-demo.github.io
The Microservices Demo website.
Stars: ✭ 65 (+20.37%)
Mutual labels:  dcos
coreos-setup
Deprecated. See DCOS Community Edition for how to currently deploy Mesos on CoreOS
Stars: ✭ 27 (-50%)
Mutual labels:  dcos
dcos-deploy
Deploy, manage and orchestrate services and apps on DC/OS
Stars: ✭ 21 (-61.11%)
Mutual labels:  dcos
container-orchestration
A Benchmark for Container Orchestration Systems
Stars: ✭ 19 (-64.81%)
Mutual labels:  dcos

DC/OS Vagrant Box

Vagrant box builder for use by tools such as miniDC/OS. It makes use of Packer to automate the build process.

The box produced by this builder does not include DC/OS, just its dependencies.

Pre-provisioning this box front-loads internet access requirements, flakiness, and slowness resulting from third party package managemers and installers. This makes DC/OS installation faster and more reliable at the cost of potentially having slightly outdated dependencies.

Provisioning Summary

  • CentOS 7 (2003) (kickstart file)
  • Ansible (for provisioning)
    • Python 2.7+
    • Pip 19.2+
    • Ansible 2.8+
  • CentOS
    • Disable kdump (reduce resource consumption for smaller VMs)
    • Configure SSH daemon (disable DNS and API authn for speed)
  • DC/OS Node
    • Docker CE w/ OverlayFS
    • curl, bash, ping, tar, xz, unzip, ipset
    • Disable firewalld
    • Create nogroup group
    • Disable IPv6
    • Enable IPv4 Forwarding (required by vagrant-hostmanager)
    • Cache docker images: nginx, zookeeper, registry
  • Debug
    • jq
    • probe
    • net-tools
    • bind-utils
  • Vagrant
    • Default Vagrant SSH key
    • Configure SSH daemon (disable DNS and API authn for speed)
    • Set box build time (/etc/vagrant_box_build_time)
  • VirtualBox and VMware (Fusion and Workstation)
    • Guest Additions / VMware Tools Additions
    • Reset network interface config
    • Remove packages to reduce image size
  • Zero out free space to improve image compression

Build

The DC/OS Vagrant Box is normally built in CI, on demand, but can be built manually as well.

Note that because the build process uses internet repositories with unversioned requirements, it's not exactly reproducible. Each built box may be slightly different than the last, but installations using the same box should be exactly the same.

Build Requirements

Build Pipeline

  1. Checkout - Clone or pull this repo
  2. Clean - Delete any left over box files
  3. Build - Use Packer to install the OS, runs all the build scripts, and export a compressed box file (~700MB)
  4. Upload - Upload the new box to S3
  5. Add - Add the new box version to the Vagrant Box Catalog Metadata (metadata.json)
  6. Publish - Upload the updated Vagrant Box Catalog Metadata to S3

Note that because the build process uses internet repositories with unversioned requirements, it's not exactly reproducible. Each built box may be slightly different than the last, but installations using the same box should be exactly the same.

Manual Build

Use the following commands to build a dcos-centos-virtualbox box:

cd <dcos-vagrant-box>
packer build -except=vmware-iso packer-template.json

Test

New boxes can be tested with either the Vagrantfile in this repo or (preferably) with miniDC/OS.

Test Requirements

Install Vagrant VBGuest Plugin

The VBGuest Plugin manages automatically installing VirtualBox Guest Additions appropriate to your local Vagrant version on each new VirtualBox VM as it is created.

vagrant plugin install vagrant-vbguest

This allows the pre-built vagrant box image to work on multiple (and future) versions of VirtualBox.

Test Local Box

To test a new local box (e.g. after ci/build_release.sh), add the box to vagrant and set the DCOS_BOX_VERSION environment variable:

cd <dcos-vagrant-box>
vagrant box add mesosphere/dcos-centos-virtualbox dcos-centos-virtualbox-iso.box
export DCOS_BOX_VERSION=0
vagrant up

Or with dcos-vagrant:

cd <dcos-vagrant>
vagrant box add mesosphere/dcos-centos-virtualbox dcos-centos-virtualbox-iso.box
export DCOS_BOX_VERSION=0
vagrant up [vms...]

To revert back to the remote Vagrant Box Catalog:

unset DCOS_BOX_VERSION
vagrant box remove mesosphere/dcos-centos-virtualbox --box-version=0

Test Local Catalog

To test a local Vagrant Box Catalog (e.g. after ci/update_catalog.sh), set the DCOS_BOX_URL environment variable:

cd <dcos-vagrant-box>
export DCOS_BOX_URL=file://~/workspace/dcos-vagrant-box/metadata.json
vagrant up

Or with dcos-vagrant:

cd <dcos-vagrant>
export DCOS_BOX_URL=file://~/workspace/dcos-vagrant-box/metadata.json
vagrant up [vms...]

To revert back to the remote Vagrant Box Catalog:

unset DCOS_BOX_URL
echo -n "https://downloads.dcos.io/dcos-vagrant/metadata.json" > ~/.vagrant.d/boxes/mesosphere-VAGRANTSLASH-dcos-centos-virtualbox/metadata_url

License

Copyright 2019 Mesosphere, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this repository except in compliance with the License.

The contents of this repository are solely licensed under the terms described in the LICENSE file included in this repository.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].