{"id":18802271,"url":"https://github.com/oracle-quickstart/oci-mesosphere","last_synced_at":"2025-04-13T18:31:26.839Z","repository":{"id":106380555,"uuid":"187712538","full_name":"oracle-quickstart/oci-mesosphere","owner":"oracle-quickstart","description":"Terraform module to deploy Mesosphere on Oracle Cloud Infrastructure (OCI)","archived":true,"fork":false,"pushed_at":"2019-11-20T20:30:11.000Z","size":14283,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-19T21:12:49.044Z","etag":null,"topics":["cloud","containers","dcos","mesos","mesosphere","oci","oracle","partner-led","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oracle-quickstart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-20T20:59:51.000Z","updated_at":"2024-04-12T13:16:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"86619215-6556-4f42-b0a9-9736ec969992","html_url":"https://github.com/oracle-quickstart/oci-mesosphere","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-quickstart%2Foci-mesosphere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-quickstart%2Foci-mesosphere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-quickstart%2Foci-mesosphere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-quickstart%2Foci-mesosphere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle-quickstart","download_url":"https://codeload.github.com/oracle-quickstart/oci-mesosphere/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248760347,"owners_count":21157344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","containers","dcos","mesos","mesosphere","oci","oracle","partner-led","terraform"],"created_at":"2024-11-07T22:27:15.239Z","updated_at":"2025-04-13T18:31:26.833Z","avatar_url":"https://github.com/oracle-quickstart.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oci-mesosphere\n\nThis is a Terraform module that deploys [Mesosphere](https://www.mesosphere.com/) on [Oracle Cloud Infrastructure (OCI)](https://cloud.oracle.com/en_US/cloud-infrastructure). It is developed jointly by Oracle and Mesosphere.\n\nThis repo is under active development. Building open source software is a community effort. We're excited to engage with the community building this.\n\n## Deployment Architecture\n![mesos architecture](https://i.imgur.com/rhui8LG.png)\n\n## Prerequisites\nFirst off you'll need to do some pre deploy setup. That's all detailed [here](https://github.com/oracle/oci-quickstart-prerequisites).\n1.\tInstall the latest version of terraform and packer\n2.\tSign up for OCI, retrieve the account data, store the necessary credentials in the x.tfvars files as well as the vars.json files and create .aws and/or .oci directory for cli and s3 access\n3.\tCreate a bucket in your tenant to store the state-file using the scripts in /global/statebucket\n\n## Clone the Module\nNow, you'll want a local copy of this repo. You can make that with the commands:\n\n    git clone https://github.com/oracle-quickstart/oci-mesosphere.git\n    cd oci-mesosphere/terraform\n    ls\n\nThat should give you this:\n\n    .\n    ├── LICENSE\n    ├── README.md\n    ├── global\n    │   ├── bastion\n    │   │   ├── backend.tf\n    │   │   ├── bootscript.tpl\n    │   │   ├── datasources.tf\n    │   │   ├── main.tf\n    │   │   ├── outputs.tf\n    │   │   ├── provider.tf\n    │   │   └── vars.tf\n    │   ├── bootnode\n    │   │   ├── backend.tf\n    │   │   ├── bootscript.tpl\n    │   │   ├── datasources.tf\n    │   │   ├── main.tf\n    │   │   ├── outputs.tf\n    │   │   ├── provider.tf\n    │   │   └── vars.tf\n    │   ├── proxy\n    │   │   ├── backend.tf\n    │   │   ├── bootscript.tpl\n    │   │   ├── datasources.tf\n    │   │   ├── main.tf\n    │   │   ├── outputs.tf\n    │   │   ├── provider.tf\n    │   │   └── vars.tf\n    │   └── statebucket\n    │       ├── bucket.tf\n    │       ├── datasources.tf\n    │       ├── outputs.tf\n    │       ├── provider.tf\n    │       └── vars.tf\n    ├── modules\n    │   └── packer\n    │       ├── WebServerImage.json\n    │       ├── bastion.json\n    │       ├── bootnode.json\n    │       ├── genconf\n    │       │   ├── config.yaml\n    │       │   └── ip-detect\n    │       ├── haproxy.json\n    │       ├── master.json\n    │       ├── scripts\n    │       │   ├── diskmount.sh\n    │       │   └── nvmemount.sh\n    │       ├── slave.json\n    │       └── webserver.json\n    ├── network\n    │   ├── backend.tf\n    │   ├── network.tf\n    │   ├── outputs.tf\n    │   ├── provider.tf\n    │   └── vars.tf\n    └── services\n        └── prod\n            ├── master\n            │   ├── backend.tf\n            │   ├── bootscript.tpl\n            │   ├── datasources.tf\n            │   ├── main.tf\n            │   ├── outputs.tf\n            │   ├── provider.tf\n            │   └── vars.tf\n            ├── public\n            │   ├── backend.tf\n            │   ├── bootscript.tpl\n            │   ├── datasources.tf\n            │   ├── main.tf\n            │   ├── outputs.tf\n            │   ├── provider.tf\n            │   └── vars.tf\n            └── slave\n                ├── backend.tf\n                ├── bootscript.tpl\n                ├── datasources.tf\n                ├── main.tf\n                ├── outputs.tf\n                ├── provider.tf\n                └── vars.tf\n\n\n![](./images/git-clone.png)\n\n## Installation sequence\n\n1.\tDeploy the network topology using the scripts in /network\n2.\tBuild the custom images using packer and the scripts in /module/packer\n3.\tProvision the boot node, for a commercial DC/OS complete the installation steps according to \u003c/link\u003e\n4.\tReleased the bastion and Proxy for access protection\n5.\tProvision the master nodes, slaves and public nodes using the scripts at /services/prod/… . Wait for the masters to complete before provisioning the slaves and the public nodes. This will take a while, because the HDD needs to be formatted as part of the installation process.\n6.\tRedirect the HAProxy, the existing config file is using Round Robin between three public nodes\n\n## Initialize the deployment\nWe now need to initialize the directory with the module in it.  This makes the module aware of the OCI provider.  You can do this by running:\n\n    terraform init\n\nThis gives the following output:\n\n![](./images/terraform-init.png)\n\n## Deploy the module\nNow for the main attraction.  Let's make sure the plan looks good:\n\n    terraform plan\n\nThat gives:\n\n![](./images/terraform-plan.png)\n\nIf that's good, we can go ahead and apply the deploy:\n\n    terraform apply\n\nYou'll need to enter `yes` when prompted.  Once complete, you'll see something like this:\n\n![](./images/terraform-apply.png)\n\nWhen the apply is complete, the infrastructure will be deployed, but cloud-init scripts will still be running.  Those will wrap up asynchronously.  So, it'll be a few more minutes before your cluster is accessible.  Now is a good time to get a coffee.\n\nWhen the deployment is completed, it will show you the public IP of one of the instances created on Oracle Cloud Infrastructure (OCI).\n\n`http://\u003cpublic IP of the instance\u003e:8080`\n\n![](./images/app.png)\n\n## View the instance in the Console\nYou can also login to the web console [here](https://console.us-phoenix-1.oraclecloud.com/a/compute/instances) to view the IaaS that is running the cluster.\n\n![](./images/console.png)\n\n## Post processing\n1.\tIn order to support HTTPS, the cluster requires a domain and a certificate. The standard settings rely on one domain, services are separated using directories. Changing this structure will need wildcard certificates\n2.\tServices on Mesos communicate via ports. Building new services, usually the port range for the public needs to be adjusted accordingly. The initial port range is very narrow to keep exposure limited, when exposing services to the public internet\n\n## Destroy the Deployment\nWhen you no longer need the deployment, you can run this command to destroy it:\n\n    terraform destroy\n\nYou'll need to enter `yes` when prompted.\n\n![](./images/terraform-destroy.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-quickstart%2Foci-mesosphere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle-quickstart%2Foci-mesosphere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-quickstart%2Foci-mesosphere/lists"}