{"id":13602093,"url":"https://github.com/sitectl/cuttle","last_synced_at":"2025-04-11T08:31:30.173Z","repository":{"id":217000037,"uuid":"94839691","full_name":"sitectl/cuttle","owner":"sitectl","description":"Blue Box SRE Operations Platform","archived":false,"fork":false,"pushed_at":"2017-08-13T20:38:42.000Z","size":1947,"stargazers_count":35,"open_issues_count":1,"forks_count":14,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-07T05:38:32.253Z","etag":null,"topics":["ansible","bastion","bluebox","elk","operations","sensu","sre"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sitectl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2017-06-20T02:10:12.000Z","updated_at":"2023-01-10T03:18:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"1e829164-e31f-409c-af53-24ac4d4cf5c5","html_url":"https://github.com/sitectl/cuttle","commit_stats":null,"previous_names":["sitectl/cuttle"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitectl%2Fcuttle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitectl%2Fcuttle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitectl%2Fcuttle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitectl%2Fcuttle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sitectl","download_url":"https://codeload.github.com/sitectl/cuttle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248361546,"owners_count":21090926,"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":["ansible","bastion","bluebox","elk","operations","sensu","sre"],"created_at":"2024-08-01T18:01:13.978Z","updated_at":"2025-04-11T08:31:30.166Z","avatar_url":"https://github.com/sitectl.png","language":"Ruby","funding_links":[],"categories":["ansible","Ruby"],"sub_categories":[],"readme":"# Cuttle\n_Originally called Site Controller (sitectl) and is Pronounced \"Cuddle\"._\n\n[![Build Status](https://travis-ci.org/IBM/cuttle.svg?branch=master)](https://travis-ci.org/IBM/cuttle)\n\n![Cuttlefish are really gross ok](./logo.png)\n\nA Monolithic Repository of Composable Ansible Roles for building an [Bluebox]\nOpinionated SRE Operations Platform.\n\nOriginally built by the BlueBox Cloud team to install the infrastructure required to build and\nsupport Openstack Clouds using [Ursula](http://github.com/blueboxgroup/ursula) it quickly grew into\na larger project for enabling SRE Operations both in the Data Center and in the Cloud for any kind\nof infrastructure.\n\nLike [Ursula](http://github.com/blueboxgroup/ursula), Cuttle uses the\n[ursula-cli](https://github.com/blueboxgroup/ursula-cli) ( installed via requirements.txt )\nfor running Ansible on specific environments and has some strong opinions on [how\nansible inventory](docs/inventory.md) should be written and handled.\n\nFor a rough idea of how Blue Box uses Cuttle by building Central and Remote sites\ntethered together with IPSEC VPNs check out [docs/architecture.md](docs/architecture.md).\n\nYou will see a number of example Ansible Inventories in `envs/example/` that\nshow Cuttle being used to build infrastructure to solve a number of problems.\n`envs/example/sitecontroller` shows close to a full deployment, whereas\n`envs/example/mirror` or `envs/example/elk` to build just specific components.\nAll of these environments can easily be deployed in Vagrant by using the `ursula-cli`\n (see [Example Usage](#example-usage) ).\n\n### Examples\n\n* See [docs/deploy_2fa_secured_bastion.md](docs/deploy_2fa_secured_bastion.md) for\na fairly comprehensive document on deploying a secure ( 2fa, console logging, RBAC)\nBastion.\n* See [docs/deploy-oauth-secured-monitoring-server.md](docs/deploy-oauth-secured-monitoring-server.md) for a OAuth2 secured Sensu / Graphite server.\n\n\nHow to Contribute\n-----------------\n\nSee [CONTRIBUTORS.md](CONTRIBUTORS.md) for the original team.\n\nThe official git repository of Site Controller is https://github.com/IBM/cuttle.\nIf you have cloned this from somewhere else, may god have mercy on your soul.\n\n### Workflow\n\nWe follow the standard github workflow of Fork -\u003e Branch -\u003e PR -\u003e Test -\u003e Review -\u003e Merge.\n\nThe Site Controller Core team is working to put together guidance on contributing and\ngovernance now that it is an opensource proect.\n\nDevelopment and Testing\n-----------------------\n\n### Build Development Environment\n\n```\n# clone this repo\n$ git clone git@github.com:ibm/cuttle.git\n\n# install pip, hopefully your system has it already\n# install virtualenv\n$ pip install virtualenv\n\n# create a new virtualenv so python is happy\n$ virtualenv --no-site-packages --no-wheel ~/\u003cusername\u003e/venv\n\n# activate your new venv like normal\n$ source ~/\u003cusername\u003e/venv/bin/activate\n\n# install ursula-cli, the correct version of ansible, and all other deps\n$ cd cuttle\n$ pip install -r requirements.txt\n\n# run ansible using ursula-cli; or ansible-playbook, if that's how you roll\n$ ursula envs/example/\u003cyour env\u003e site.yml\n\n# decactivate your virtualenv when you are done\n$ deactivate\n```\n\n[Vagrant](https://www.vagrantup.com/) is our preferred Development/Testing framework.\n\n### Example Usage\n\nursula-cli understands how to interact with vagrant using the `--provisioner` flag:\n\n```\n$ ursula --provisioner=vagrant envs/example/sitecontroller bastion.yml\n$ ursula --provisioner=vagrant envs/example/sitecontroller site.yml\n```\n\n### Openstack and Heat\n\n_your inventory must have a `heat_stack.yml` and a optional `vars_heat.yml` in order for this to work_\n\nYou can also test in Openstack with Heat Orchestration. First, grab your stackrc file from Openstack Horizon:\n\n`Project \u003e Compute \u003e Access \u0026 Security \u003e Download OpenStack RC File`\n\nEnsure your `ssh-agent` is running, then source your stackrc and run the play:\n```\n$ source \u003cusername\u003e-openrc.sh\n$ ursula --ursula-forward --provisioner=heat envs/example/sitecontroller site.yml\n```\n\nAdd argument `--ursula-debug` for verbose output.\n\n## Run behind a docker proxy for local dev\n\n```\n$ docker run  \\\n  --name proxy -p 3128:3128 \\\n  -v $(pwd)/tmp/cache:/var/cache/squid3 \\\n  -d jpetazzo/squid-in-a-can\n```\n\nthen set the following in your inventory (`vagrant.yml` in `envs/example/*/`)\n\n```\nenv_vars:\n  http_proxy: \"http://10.0.2.2:3128\"\n  https_proxy: \"http://10.0.2.2:3128\"\n  no_proxy: localhost,127.0.0.0/8,10.0.0.0/8,172.0.0.0/8\n\n```\n\nDeploying\n---------\n\nTo actually deploy an environment you would use ursula-cli like so:\n\n```\n$ ursula ../sitecontroller-envs/sjc01 bastion.yml\n$ ursula ../sitecontroller-envs/sjc01 site.yml\n\n# targetted runs using any ansible-playbook option\n$ ursula ../ursula-infra-envs/sjc01 site.yml --tags openid_proxy\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsitectl%2Fcuttle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsitectl%2Fcuttle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsitectl%2Fcuttle/lists"}