@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
273 lines (272 loc) • 10.5 kB
JSON
{
"private": false,
"name": "@installdoc/ansible-gas-station",
"version": "2.1.0",
"description": "An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤",
"license": "MIT",
"author": "Brian Zalewski <brian@megabyte.space> (https://megabyte.space)",
"homepage": "https://megabyte.space",
"repository": {
"type": "git",
"url": "git+https://github.com/megabyte-labs/Gas-Station.git"
},
"bugs": {
"email": "help@megabyte.space",
"url": "https://gitlab.com/megabyte-labs/gas-station/-/issues"
},
"type": "module",
"scripts": {
"build": "bash start.sh && task ansible:build:none",
"bump": "npm run build && npm version patch --no-commit-hooks --no-git-tag-version --force && npm publish",
"commit": "bash start.sh && task commit",
"fix": "bash start.sh && task fix",
"help": "bash start.sh && task --menu",
"lint": "bash start.sh && task lint",
"preload": "bash start.sh && task preload",
"prepare": "bash start.sh && (test -f Taskfile.yml && task npm:prepare) || true",
"prepublishOnly": "test -z $SKIP_PREPUB && bash start.sh && task npm:bundle:create || true",
"release": "bash start.sh && task publish:semantic-release",
"repair": "bash <(curl -sS https://install.doctor/repair)",
"start": "test -z $SKIP_NPM_START && bash start.sh || true",
"test": "bash start.sh && [ -z \"$PS1\" ] && task ansible:test:prompt || task ansible:test:default",
"unpack": "bash start.sh && task npm:bundle:unpack",
"update": "bash start.sh && task update"
},
"config": {
"commitizen": {
"path": "node_modules/git-cz-emoji"
}
},
"dependencies": {},
"optionalDependencies": {},
"devDependencies": {
"@commitlint/config-conventional": "latest",
"eslint-config-strict-mode": "latest",
"git-cz-emoji": "latest",
"handlebars-helpers": "latest",
"prettier-config-sexy-mode": "latest",
"semantic-release-config": "latest",
"typescript": "^4.5.5"
},
"keywords": [
"ansible",
"ansible-playbook",
"ansible-role",
"archlinux",
"centos",
"debian",
"doctor",
"fedora",
"install",
"installdoc",
"installdoctor",
"macos",
"mblabs",
"megabytelabs",
"molecule",
"playbook",
"professormanhattan",
"role",
"ubuntu",
"washingtondc",
"windows"
],
"engines": {
"node": ">=14.18.0"
},
"publishConfig": {
"@megabyte:registry": "https://gitlab.com/api/v4/projects/18473622/packages/npm/",
"access": "public"
},
"blueprint": {
"description": "An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤",
"github_id": "R_kgDOGjKTSg",
"gitlab_group_id": "3940994",
"gitlab_project_id": "18473622",
"group": "ansible",
"name": "Gas Station",
"overview": "Gas Station is a well-documented, customizable provisioning script (powered by Ansible and Terraform) that installs a cloud that includes tools, services, and Dockerized web applications that every developer/power-user should be using. It supports every major operating system including Windows, macOS, Debian flavors, RedHat flavors, and even Archlinux. It is the cumulative effort a team of developers and the relentless pursuit of the best of GitHub. The majority of the tools installed are found on various \"awesome\" lists on GitHub and other \"Best Software for\" lists. You can use Gas Station to rapidly provision a single machine or even a whole network.\n\n\nGas Station was born out of paranoia. Our method of ensuring our machines are malware-free is simple; wipe the machine(s) on a regular basis and re-install everything using an automated process. To accomplish this, we broke down this project into hundreds of roles (which can be used seperately without adopting the Gas Station \"wipe everything weekly\" mentality). The playbook and roles are designed to retain the state of the applications between installs. Stateless configurations are generally backed up to a private git repository and stateful application data is backed up to encrypted S3 buckets. This, in a way, reduces the attack surface of your system since the attacker would have to figure out a way of persisting their malware across re-installs (which is likely not an easy feat). This approach ensures that your system is built with disaster recovery in mind.\n\n\nThe main goal of Gas Station is not only to provide a sweet suite of software and web applications but also to encourage a new philosophy for how operating systems should be maintained. If everyone on earth decided to use Gas Station, bot nets would die out overnight. On top of that, when you store your configurations and applications in a format that can be added to source control, you ensure that you hold onto your work even when you get a new laptop or decide to reformat. Gas Station is the perfect example of how to do that. You can use Gas Station with minimal modifications to set up your personal home lab. However, we encourage you to modify it for your purposes. If you would like to give back to the community, please open pull requests when you come up with anything useful so our free product can mature and improve over time.",
"repository": {
"github": "https://github.com/megabyte-labs/Gas-Station",
"gitlab": "https://gitlab.com/megabyte-labs/gas-station"
},
"sentryDSN": "https://glet_eba773e2329ceebd1c8a3de52dc3420d@gitlab.com/api/v4/error_tracking/collector/18473622",
"slug": "gas-station",
"subgroup": "playbook",
"title": "Gas Station ⛽",
"useful_links": [
[
"Link",
"Description"
],
[
"[Ansible](https://www.ansible.com/)",
"Homepage of Ansible"
]
]
},
"changelog": {
"displayTypes": [
"feat",
"fix",
"perf",
"refactor",
"revert"
],
"showAuthor": true
},
"commitlint": {
"extends": [
"@commitlint/config-conventional"
],
"helpUrl": "https://megabyte.space/docs/contributing/commits"
},
"eslintConfig": {
"extends": "eslint-config-strict-mode",
"ignorePatterns": [
"roles/**/*"
],
"rules": {
"eslint-comments/disable-enable-pair": "off",
"eslint-comments/no-unused-enable": "off",
"import/no-extraneous-dependencies": "warn",
"json-schema-validator/no-invalid": "off",
"no-warning-comments": "off",
"yml/no-empty-document": "off",
"yml/no-empty-mapping-value": "off"
}
},
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/megabytelabs"
},
{
"type": "patreon",
"url": "https://www.patreon.com/ProfessorManhattan"
}
],
"jscpd": {
"gitignore": true,
"threshold": 0.1
},
"lint-staged": {
"(Brewfile|composer.lock|Gemfile|Gopkg.lock|Pipfile.lock)": [
"task fix:prettier --"
],
"**/!(logo).(jpg|png)": [
"task image:compress --"
],
"**/*": [
"task lint:any --"
],
"**/*!(template).(json|webapp|webmanifest)": [
"task fix:json --"
],
"**/*.(bash|cfg|cgi|command|css|env|env.*|handlebars|hbs|html|less|fcgi|java|md|mdx|mjml|php|phtml|properties|reg|scss|tmpl|tmux|tool|tpl|zsh)": [
"task fix:prettier --"
],
"**/*.(cjs|js|jsx|mjs|ts|tsx)": [
"task fix:js --",
"task lint:js --"
],
"**/*.(yml|yaml)": [
"task fix:yaml --",
"task lint:yaml --"
],
"**/*.go": [
"task fix:go --",
"task lint:go --"
],
"**/*.md": [
"task fix:markdown --",
"task lint:spelling:markdown --"
],
"**/*.php": [
"task fix:php --",
"task lint:php --"
],
"**/*.py": [
"task fix:python --",
"task lint:python --"
],
"**/*.sh": [
"task fix:prettier --",
"task fix:shell --",
"task lint:shell --"
],
"**/*.toml": [
"task fix:toml --",
"task fix:prettier --",
"task lint:toml --"
],
"**/*.xml": [
"task fix:xml --",
"task lint:xml --"
],
"**/*vault.yml": [
"task ansible:vault:lint:file --"
],
"Dockerfile": [
"task fix:prettier --",
"task lint:docker --"
],
"Vagrantfile": [
"task fix:prettier --",
"task lint:vagrant"
],
"logo.png": [
"task image:resize -- 200 200",
"task image:compress --"
]
},
"ntl": {
"descriptions": {
"build": "Builds the project using the build command specified under scripts in package.json",
"bump": "Used to quickly build, increase the package.json version, and publish the package",
"commit": "If unsure, use this task to commit your code so that it adheres to our commit rules",
"fix": "Run auto-fixing with all available auto-fixers",
"help": "Display the Bodega Taskfile.yml interactive help menu",
"lint": "Lint the project with all available linters",
"preload": "Preload the operating system with commonly used libraries and tools",
"prepare": "A hook triggered by running npm install that runs logic such as installing pre-commit hooks",
"release": "Publish the software to all supported channels using semantic-release",
"repair": "Fixes basic issues in projects that are having trouble running basic commands like 'task start'",
"start": "Entrypoint for new developers that installs requirements and then runs 'task start'",
"test": "Runs the appropriate test logic by running the test command defined under scripts in package.json",
"unpack": "Populates production node_modules from compressed copies saved in the .modules/ folder",
"update": "Update and refresh the repository with upstream changes and templated parts"
}
},
"pnpm": {
"allowedVersions": {
"@typescript-eslint/eslint-plugin": "5",
"eslint": "8",
"typescript": "4"
},
"neverBuiltDependencies": [
"core-js",
"core-js-pure",
"highlight.js"
],
"peerDependencyRules": {
"ignoreMissing": [
"eslint",
"prettier"
]
}
},
"prettier": "prettier-config-sexy-mode",
"release": {
"branches": [
"main",
"master",
"next",
{
"name": "beta",
"prerelease": true
}
],
"extends": "semantic-release-config"
}
}