From 2497e68ac60f84ecd24e0aa7fbe27c9920a9662d Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Mon, 21 Sep 2020 16:08:20 +0200 Subject: [PATCH] new: [dhcp] new charm Signed-off-by: Valentin Lab --- dhcp/build/Dockerfile | 12 ++++++++++ dhcp/hooks/init | 17 ++++++++++++++ dhcp/metadata.yml | 53 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 dhcp/build/Dockerfile create mode 100755 dhcp/hooks/init create mode 100644 dhcp/metadata.yml diff --git a/dhcp/build/Dockerfile b/dhcp/build/Dockerfile new file mode 100644 index 0000000..080ab7c --- /dev/null +++ b/dhcp/build/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:latest + +LABEL description="ISC DHCP Server on Alpine Linux" + +RUN apk --no-cache add dhcp + +ENTRYPOINT ["/usr/sbin/dhcpd", "-4", \ + "-d", \ + # "-cf", "/config/dhcpd.conf", \ + # "-lf", "/config/dhcpd.leases", \ + "-user", "dhcp", \ + "-group", "dhcp"] diff --git a/dhcp/hooks/init b/dhcp/hooks/init new file mode 100755 index 0000000..31b4676 --- /dev/null +++ b/dhcp/hooks/init @@ -0,0 +1,17 @@ +#!/bin/bash + +## Init is run on host +## For now it is run every time the script is launched, but +## it should be launched only once after build. + +## Accessible variables are: +## - SERVICE_NAME Name of current service +## - DOCKER_BASE_IMAGE Base image from which this service might be built if any +## - SERVICE_DATASTORE Location on host of the DATASTORE of this service +## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service + + +config=$(options-get config 2>/dev/null) || true + +mkdir -p "$SERVICE_CONFIGSTORE"/etc/dhcp && +e "$config" > "$SERVICE_CONFIGSTORE"/etc/dhcp/dhcpd.conf diff --git a/dhcp/metadata.yml b/dhcp/metadata.yml new file mode 100644 index 0000000..86fc839 --- /dev/null +++ b/dhcp/metadata.yml @@ -0,0 +1,53 @@ +data-resources: + - /var/lib/dhcp + - /var/log/dhcp +config-resources: + - /etc/dhcp/dhcpd.conf +default-options: + # config: | + # ## Sample configuration file for ISC dhcpd + + # option domain-name "example.org"; + # option domain-name-servers ns1.example.org, ns2.example.org; + # default-lease-time 600; + # max-lease-time 7200; + # #ddns-update-style none; + # authoritative; + # log-facility local7; + + # ## No service will be given on this subnet, but declaring it allows the dhcp + # ## server to listen on this network + # subnet 172.17.0.0 netmask 255.255.255.0 { + # } + + # ## This is a very basic subnet declaration. + # subnet 10.254.239.0 netmask 255.255.255.224 { + # range 10.254.239.10 10.254.239.20; + # option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; + # } + + # ## A slightly different configuration for an internal subnet. + # subnet 10.5.5.0 netmask 255.255.255.224 { + # range 10.5.5.26 10.5.5.30; + # option domain-name-servers ns1.internal.example.org; + # option domain-name "internal.example.org"; + # option routers 10.5.5.1; + # option broadcast-address 10.5.5.31; + # default-lease-time 600; + # max-lease-time 7200; + # } + + # ## Fixed IP addresses can also be specified for hosts. These addresses + # ## should not also be listed as being available for dynamic assignment. + # ## Hosts for which fixed IP addresses have been specified can boot using + # ## BOOTP or DHCP. Hosts for which no fixed address is specified can only + # ## be booted with DHCP, unless there is an address range on the subnet + # ## to which a BOOTP client is connected which has the dynamic-bootp flag + # ## set. + # host fantasia { + # hardware ethernet 08:00:07:26:c0:a5; + # fixed-address fantasia.example.com; + # } +docker-compose: + ports: + - 67:67/udp \ No newline at end of file