diff --git a/package/Config.in b/package/Config.in index cd6e312e..ba3eea4c 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1,5 +1,6 @@ source "$BR2_EXTERNAL_INFIX_PATH/package/cligen/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/package/clixon/Config.in" +source "$BR2_EXTERNAL_INFIX_PATH/package/confd/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/package/factory/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/package/finit/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/package/ifupdown2/Config.in" diff --git a/package/confd/Config.in b/package/confd/Config.in new file mode 100644 index 00000000..cb551a7a --- /dev/null +++ b/package/confd/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_CONFD + bool "confd" + select BR2_PACKAGE_SYSREPO + select BR2_PACKAGE_NETOPEER2 + select BR2_PACKAGE_AUGEAS + select BR2_PACKAGE_JANSSON + help + A plugin to sysrepo that provides the core YANG models used to + manage an Infix based system. Configuration can be done using + either the on-system CLI or using NETCONF. diff --git a/package/confd/clean-etc b/package/confd/clean-etc new file mode 100755 index 00000000..ffae2f9c --- /dev/null +++ b/package/confd/clean-etc @@ -0,0 +1,20 @@ +#!/bin/sh + +# This is an unmanaged node, leave /etc as-is +/lib/infix/use-etc && exit 0 + +# This is a managed node, ignore all default configuration ... +# ... except for some core services +reserved() +{ + for svc in sysrepo dnsmasq getty lldpd nginx sysklogd; do + [ "$1" = "${svc}.conf" ] && return 0 + done + + return 1 +} + +for file in /etc/finit.d/enabled/*.conf; do + reserved "$(basename "$file")" && continue + rm "$file" +done diff --git a/package/confd/confd.mk b/package/confd/confd.mk new file mode 100644 index 00000000..d47a7ee6 --- /dev/null +++ b/package/confd/confd.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# confd +# +################################################################################ + +CONFD_VERSION = 1.0 +CONFD_LICENSE = BSD-3-Clause +CONFD_SITE_METHOD = local +CONFD_SITE = $(BR2_EXTERNAL_INFIX_PATH)/src/confd +CONFD_DEPENDENCIES = augeas sysrepo +CONFD_AUTORECONF = YES + +define CONFD_INSTALL_EXTRA + cp $(CONFD_PKGDIR)/sysrepo.conf $(FINIT_D)/available/ + ln -sf ../available/sysrepo.conf $(FINIT_D)/enabled/sysrepo.conf + cp $(CONFD_PKGDIR)/tmpfiles.conf $(TARGET_DIR)/etc/tmpfiles.d/confd.conf + mkdir -p $(TARGET_DIR)/lib/infix + cp $(CONFD_PKGDIR)/prep-db $(TARGET_DIR)/lib/infix/ + cp $(CONFD_PKGDIR)/clean-etc $(TARGET_DIR)/lib/infix/ +endef +CONFD_TARGET_FINALIZE_HOOKS += CONFD_INSTALL_EXTRA + +$(eval $(autotools-package)) diff --git a/package/confd/prep-db b/package/confd/prep-db new file mode 100755 index 00000000..541a41f5 --- /dev/null +++ b/package/confd/prep-db @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +exit 0 diff --git a/package/confd/sysrepo.conf b/package/confd/sysrepo.conf new file mode 100644 index 00000000..08c717c2 --- /dev/null +++ b/package/confd/sysrepo.conf @@ -0,0 +1,5 @@ +run if: [S] /lib/infix/clean-etc -- +run if: [S] /lib/infix/prep-db -- +service if: name:sysrepo [12345789] sysrepo-plugind -n -- Configuration daemon + +task if: [12345789] resolvconf -u -- Update DNS configuration diff --git a/package/confd/tmpfiles.conf b/package/confd/tmpfiles.conf new file mode 100644 index 00000000..504121c4 --- /dev/null +++ b/package/confd/tmpfiles.conf @@ -0,0 +1 @@ +d /run/resolvconf/interfaces - - -