Commit 5581cbab authored by fnux's avatar fnux

Merge branch 'jool' into 'master'

Implement __jool type.

See merge request ungleich-public/cdist-contrib!28
parents f181b5dd 6a0647cd
#!/bin/sh
# Explorer for the __jool type to determine if we need the -virt or the -lts modules.
[ "$(sh -e "${__explorer:?}"/os)" = 'alpine' ] || exit 0
case $(uname -r) in
*-virt)
printf "jool-modules-virt"
;;
*-lts)
printf "jool-modules-lts"
;;
*)
cat <<- EOF >&2
Incompatible kernel version found - could not install jool kernel
modules. Please use one of linux-lts or linux-virt.
EOF
exit 1
esac
cdist-type__jool(7)
===================
NAME
----
cdist-type__jool - Configures a NAT64 instance using jool.
DESCRIPTION
-----------
This type configures an instance of a NAT64 using jool. This type **does not**
configure anything related to the other capacities of the jool project, such as
SIIT (see the `jool_siit` daemon / `__jool_siit` type - unimplemented at this
time). See https://jool.mx
Note that this type is only implemented for the Alpine Linux operating system.
Note that this type currently does not implement running several parallel
instances of jool NAT64. Please contribute your implementation if you do so.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
instance
The instance name, `default` if unspecified.
framework
The used translation framework, `netfilter` if unspecified.
pool6
The IPv6 prefix used to map IPv4 addresses, `64:ff9b::/96` if unspecified.
EXAMPLES
--------
.. code-block:: sh
__jool # Everything default
# or, if you're feeling contrary
__jool --instance "prettysoup" \
--framework "iptables" \
--pool6 "2001:DB8:dead:beef::/96"
SEE ALSO
--------
`cdist-type__jool_siit(7)` - yet to be written
`cdist-type__joold(7)` - yet to be written
AUTHORS
-------
Joachim Desroches <joachim.desroches@epfl.ch>
COPYING
-------
Copyright \(C) 2021 Joachim Desroches. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
#!/bin/sh -e
#
# 2021 Joachim Desroches (joachim.desroches@epfl.ch)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
os=$(cat "${__global:?}/explorer/os")
case "$os" in
'alpine')
packages="jool-tools jool-tools-openrc $(cat "${__object:?}"/explorer/alpine-kernel-modules)"
;;
*)
printf "This type has no implementation for %s. Please contribute one if you can.\n" "$os"
exit 1
;;
esac
for pkg in $packages;
do
__package "$pkg"
done
instance="default"
if [ -f "${__object:?}/parameter/instance" ];
then
instance="$(cat "${__object:?}/parameter/instance")"
fi
framework="netfilter"
if [ -f "${__object:?}/parameter/framework" ];
then
framework="$(cat "${__object:?}/parameter/framework")"
fi
pool6="64:ff9b::/96"
if [ -f "${__object:?}/parameter/pool6" ];
then
pool6="$(cat "${__object:?}/parameter/pool6")"
fi
require='__package/jool-tools' __file /etc/jool/jool.conf \
--source - <<- EOF
{
"instance": "$instance",
"framework": "$framework",
"global": {
"pool6": "$pool6"
}
}
EOF
__start_on_boot 'jool'
instance
framework
pool6
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment