Estou configurando os aplicativos *ARR suite nas prisões (usando o gerenciador Bastille). Eu costumava fazer isso no debian e no docker, mas desta vez mudei para o freeBSD para testar seu suporte nativo ao zfs.
Na configuração, preciso configurar um usuário uniforme, configurar montagens externas (a parte envolvida) e instalar os aplicativos em cada prisão. Fiz isso manualmente em um sistema de teste e funcionou perfeitamente (finalmente!).
No docker, tudo isso foi automatizado na forma de scripts de composição. Eu escrevo uma vez e não preciso me preocupar com isso quando reinstalar/atualizar o host.
Existe alguma ferramenta de automação que eu possa usar no meu caso?
A ferramenta de automação seria simples scripts de shell ou, se você já estiver usando o Bastille , criaria um modelo igualmente simples .
Você pode executar suas ações "fora" da prisão, modificando diretamente o sistema de arquivos executando um script no sistema host. Ou você pode executá-los "dentro" do contexto da prisão (contêiner) usando jexec(8)
Isso iniciará um shell dentro do contexto do contêiner. Em vez de iniciar um shell interativo, você pode simplesmente iniciar um script de shell.
O mesmo princípio se aplica quando você envolve tudo com a ferramenta Bastille. Procure
CMD
na seção de modelos .No topo da página, eles têm um link para um repositório com vários exemplos prontos para usar. Se dermos uma rápida olhada no apache, veremos o seguinte conteúdo no arquivo
Bastillefile
:A
Bastillefile
seguir está uma lista de Template Automation Hooks que são primitivos típicos do FreeBSD. ECMD
permite que você execute qualquer comando/script.A maior parte da configuração do usuário normalmente é feita automaticamente no FreeBSD usando portas/pacotes (ou seja, apache). É por isso que você não vê muitas receitas fazendo isso. Se você quiser saber mais sobre isso, verifique a árvore de ports e veja como os pacotes são criados. Isso está documentado no Manual do FreeBSD Porter . Portanto, para o FreeBSD, não seria incomum você lançar seus próprios pacotes como parte de sua automação (normalmente usando poudiere ). No entanto, isso seria um exagero para uma configuração doméstica, mas é "como as coisas são feitas".
Mas ainda podemos configurar usuários sem muita demora. Simplesmente usamos pw e expandimos o exemplo dado na página de manual com a
-u
opção:Você pode executar isso do host para a prisão usando
jexec
ou como umCMD
arquivoBastillefile
.Se você quiser correr
pw
fora da prisão você deve usar as opções-R rootdir
e-V etcdir
. Você então os apontaria para o local chroot da sua prisão.Lembre-se que quando você executa coisas com
jexec
ouCMD
você só tem acesso aos arquivos dentro do contexto do chroot atribuído à prisão. Ou seja: se você deseja executar um script dentro do jail, ele precisa estar dentro do sistema de arquivos do jails.