Estoy buscando sugerencias de la comunidad sobre la mejor manera de abordar este problema de asegurar un archivo de texto y al mismo tiempo hacerlo más fácil de compartir:
-
Tengo una colección de recetas de chef en git, que define laboratorios por ejemplo. una configuración de jenkins CI, que las personas podrán utilizar como herramienta de bifurcación y adaptar a su propio uso
-
Sin embargo, puedo ver las circunstancias cuando alguien quiera agregar ciertas secciones inmutables del libro de cocina, por ejemplo. configuración del cortafuegos
-
¿Qué estrategia tendría sentido bloquear algunas secciones del archivo para validar que no se ha cambiado, al tiempo que se permiten cambios arbitrarios fuera de eso?
-
Idealmente, también resolvería la capacidad de ofuscar las secciones si es necesario
¿Agregaría mi propio DSL al código, con una suma de comprobación para cada bloque protegido, preprocesarlo para desenvolverlo y validarlo antes de pasárselo al chef?
por ejemplo Mi primer intento en un formato, aún no resuelve el problema de que las personas eliminen todas las secciones firmadas, a menos que todos los archivos tengan que estar firmados
por supuesto que podría estar pensando en esto al revés.
#---SIGNED-FILE SHA-256 507e74380188c07bad2fa66acb8cbbeeb63f84fcee5fd639499575654239cd49
#
# Cookbook Name:: jenkins
# Recipe:: default
#
# https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
# This is super-simple, compared to the other Chef cookbook I found
# for Jenkins (https://github.com/fnichol/chef-jenkins).
#
# This doesn't include Chef libraries for adding Jenkin's jobs via
# the command line, but it does get Jenkins up and running.
include_recipe "apt"
include_recipe "java"
#---SIGNED-SECTION-START SHA-256 e4d3d02f14ee2a6d815a91307c610c3e182979ce8fca92cef05e53ea9c90f5c7
apt_repository "jenkins" do
uri "http://pkg.jenkins-ci.org/debian"
key "http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key"
components ["binary/"]
action :add
end
#---SIGNED-SECTION-END
#---OBFUSCATED-SECTION-START SHA-256 5f536f2137dc7e2c5817de861d1329ead72b1e9d2dbb9dbe181ec7bc274dddeb
YXB0X3JlcG9zaXRvcnkgImplbmtpbnMiIGRvCiAgdXJpICJodHRwOi8vcGtnLmplbmtpbnMtY2kub3JnL2RlYmlhbiIKICBrZXkgImh0dHA6Ly9wa2cuamVua2lucy1jaS5vcmcvZGViaWFuL2plbmtpbnMtY2kub3JnLmtleSIKICBjb21wb25lbnRzIFsiYmluYXJ5LyJdCiAgYWN0aW9uIDphZGQKZW5k
#---OBFUSCATED-SECTION-END
package "jenkins"
service "jenkins" do
supports [:stop, :start, :restart]
action [:start, :enable]
end