{"id":14984577,"url":"https://github.com/anotherkamila/bsdops","last_synced_at":"2025-04-10T21:20:50.471Z","repository":{"id":145003960,"uuid":"164319714","full_name":"AnotherKamila/bsdops","owner":"AnotherKamila","description":"DebOps-derived reusable, integrated Ansible configs for FreeBSD-based machines","archived":false,"fork":false,"pushed_at":"2019-01-21T09:51:13.000Z","size":2622,"stargazers_count":10,"open_issues_count":10,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-24T18:49:37.444Z","etag":null,"topics":["ansible","ansible-roles","config-management","configuration-management","debops","freebsd"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnotherKamila.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-01-06T15:25:11.000Z","updated_at":"2024-07-11T22:48:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"8ec5d14c-e7d0-4e20-86d9-cc22616e5c47","html_url":"https://github.com/AnotherKamila/bsdops","commit_stats":{"total_commits":43,"total_committers":1,"mean_commits":43.0,"dds":0.0,"last_synced_commit":"63809cb6316ad44b11deb1e4d948ce1c4447150e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnotherKamila%2Fbsdops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnotherKamila%2Fbsdops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnotherKamila%2Fbsdops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnotherKamila%2Fbsdops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnotherKamila","download_url":"https://codeload.github.com/AnotherKamila/bsdops/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248298890,"owners_count":21080425,"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","ansible-roles","config-management","configuration-management","debops","freebsd"],"created_at":"2024-09-24T14:09:17.560Z","updated_at":"2025-04-10T21:20:50.454Z","avatar_url":"https://github.com/AnotherKamila.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BSDops\n\nDebOps-derived reusable, integrated Ansible configs for FreeBSD-based machines.\n\nSee [Design Goals](https://github.com/AnotherKamila/bsdops/wiki/Design-Goals) for more info on what exactly this project is trying to achieve.\n\n**Note: This is currently in a very early stage of development. Currently only `debops bootstrap` is fully \"FreeBSD-ified\", and \"extensive testing\" is a dream.**\n\n## Why should I use this, especially when I know it will break?\n\nBecause:\n\n1. you should use configuration management\n2. Ansible is a decent configuration management option, so you likely want to use that\n3. If you're going to use Ansible, you will have to write your own roles, because there is no \"ready-made\" option for FreeBSD\n4. If you're going to write your own roles, you might as well start with a decent base that can benefit other people too, such as this one :-)\n\n## How to use\n\n### 1. Install\n\n1.  Install `debops` normally:\n    * https://docs.debops.org/en/master/user-guide/install.html\n    * I prefer to install it into a venv: `pipenv install ansible debops`\n\n2.  Create a project directory for your configuration:\n    ```\n    mkdir my-project\n    cd my-project\n    # if you installed with pipenv: pipenv shell\n    debops-init .\n    ```\n\n3.  Tell `debops` to use [my fork](https://github.com/AnotherKamila/debops) instead of the official DebOps repo: put it into a `debops/` subdirectory:\n    ```\n    # (inside the project directory)\n    git clone https://github.com/AnotherKamila/debops debops\n    # or git submodule add ...\n    # or ln -s ...\n    ```\n\n    Or with `git subrepo`:\n    ```\n    git subrepo clone https://github.com/anotherkamila/debops.git debops/\n    ```\n    \n    (this repository uses `git subrepo`)\n\n4.  Copy the file `ansible/inventory/group_vars/freebsd/bsdops_required.yml` into your project.\n      This file contains important settings that adapt DebOps defaults for FreeBSD.\n\n      (In the future, manually copying the variables will not be necessary, but bear with me for a while.)\n\n### 2. Bootstrap host(s)\n\n1.  Add your host(s) to the inventory: `$EDITOR ansible/inventory/hosts`\n    * All FreeBSD hosts need to be in a group named `freebsd`  (this is used to run the right OS-specific things).  \n      Example inventory file:\n      ```\n      [freebsd]\n      freebsdhost.example.org\n\n      # Linux-based hosts still work\n      [linux]\n      debianhost.example.org\n      devuanhost.example.org\n\n      [debops_all_hosts:children]\n      freebsd\n      linux\n      ```\n      Note: You can use the same project/inventory for FreeBSD-based and Linux-based hosts, BSDops tries to be compatible.\n\n2.  Bootstrap your host(s):\n    Make sure that you can log in without password (`--ask-pass` doesn't work with FreeBSD).  \n    For example: `ssh-copy-id myhost`.\n    Then run:\n    ```\n    debops bootstrap \u003cparameters-needed-to-connect\u003e [--limit myhost]\n    # examples:\n    # debops bootstrap -u root  # if you can log in as root\n    # debops bootstrap -u admin --become --ask-become-pass  # if you can log in as a user that has sudo\n    ```\n\n### 3. Use DebOps roles to effortlessly set up your host(s)\n\nThis feature will be available in a future version :D\n\nSeriously though: This project is a WIP and so far I have only \"FreeBSD-ified\" the roles used in the `bootstrap` playbook. Other roles might or might not work (often e.g. paths or package names might be wrong). However, patching these higher-level roles should be relatively straight-forward in many cases. So: Try it, see what breaks, and send a pull request!\n\nThe next roles I intend to convert are generic basic things like firewalling. My use-case is a router box, so the things I'll work on next will be going in that direction. If you want something else, I'll happily accept pull requests :-)\n\nSee [Common Differences](https://github.com/AnotherKamila/bsdops/wiki/Common-Differences) for a quick list of things which are often different on Linux vs FreeBSD and how I handle them when FreeBSD-ifying roles.\n\n## Configuration\n\nEverything is the same as DebOps, so in theory this section is unnecessary. However, as a quick reference, this is a list of things one might want to change often:\n\n* `bootstrap__admin_system`: set to False to have the automatically created admin user get a home directory under `/home` instead of under `/usr/local`.\n\n## Compatibility with Debian-based hosts\n\nIdeally, my DebOps fork should work the same as original DebOps on non-FreeBSD hosts -- the idea is to add new functionality without breaking existing stuff. That said, I do not currently have the capacity to test that much. So, it may break. But if it does break, it's a bug, so please report it (ideally with a patch :-)).\n\n# Development\n\n**This repo contains the documentation (so, this README) and an example debops project that you can use as a starting point. The repo with my patched version of debops lives at [anotherkamila/debops](https://github.com/AnotherKamila/debops).**\n\nDevelopment workflow with `git subrepo`:\n\n```\ngit subrepo clone git@github.com:anotherkamila/debops.git debops/  # use your fork\n[hack hack]\n[git commit ...]\ngit subrepo push debops\ngit push\n\n```\n\nUpdating `debops` from upstream with minimum suffering:\n\n```\ngit subrepo push debops\ncd WHEREVER_I_CHECKED_OUT_DEBOPS_REPO_AS_TOPLEVEL\ngit pull origin master\ngit fetch --all\ngit merge upstream/master\ngit push\ncd BACK_TO_HERE\ngit subrepo pull debops\n```\n\n# License\n\nThe contents of this repository EXCLUDING the `debops/` directory is licensed under BSD 2-clause license, as indicated by the LICENSE file.\n\nAs DebOps is licensed under GPL, the `debops/` directory and my changes in it are licensed under GPL.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanotherkamila%2Fbsdops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanotherkamila%2Fbsdops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanotherkamila%2Fbsdops/lists"}