Skip to content

Common Differences

Kamila Součková edited this page Jan 13, 2019 · 3 revisions

A list of common issues when a role hasn't been FreeBSD-ified, and how to fix them.

Different paths

Usually manifests as: No such file or directory error.

Unlike Linux, FreeBSD puts things installed from packages under /usr/local. Almost all DebOps roles hard-code paths to /etc instead of /usr/local/etc and /usr/bin instead of /usr/local/bin.

I handle this by using a pkg_base_path variable with appropriate defaults instead of hard-coding the path:

  • /etc/foo becomes {{ pkg_base_path | d() }}/etc/foo
  • /usr/bin/bar becomes {{ pkg_base_path | d('/usr') }}/bin/bar

Different package names

Usually manifests as: pkg complaining about no installation candidates

DebOps puts package names into variables defined in (usually) some_role/defaults/main.yml. Currently it is best if you fix this in your project repo by overriding the variable in your ansible/group_vars/freebsd (and please please please let me know, e.g. by filing an issue here). Closing issue #1 will enable a better way of fixing these things.

A group named root does not exist on FreeBSD

DebOps sets many config files to be owned by group root, but on FreeBSD gid 0 is wheel and root does not exist.

How to best fix this is a decision I haven't made yet, see #3.

A role makes no sense on FreeBSD

DebOps roles tend to have a variable that can be used to disable them. You can set that variable in your project's ansible/group_vars/freebsd (and please let me know, e.g. by filing an issue here). Again, closing #1 will enable a better way of overriding the default variables.