Consul

Overview

This is a flavour containing the consul service discovery platform.

Together with the [nomad-server](https://potluck.honeyguide.net/blog/nomad-server/] and the [traefik](https://potluck.honeyguide.net/blog/traefik-consul/] pot flavours on this site, you can easily set up a virtual datacenter.

Please note that a specific network configuration is suggested (see Installation-chapter).

Installation

  • Create your local jail from the image or the flavour files.
    • It is suggested that you create it with an alias network similar to the following command:
      pot import -p consul-fbsd-amd64-12_1 -t 1.0 -N alias -i "em0|192.168.178.101“ -U https://potluck.honeyguide.net/consul * Otherwise export the ports after creating the jail:
      pot export-ports -p <jailname> -e 8500:8500
  • Adjust to your environment: sudo pot set-env -p <jailname> -E DATACENTER=<datacentername> -E NODENAME=<consul-nodename> -E IP=<IP address of this consul node>

Usage

You can connect to the dashboard on port 8500 of your jail IP address, with the example above that would be http://192.168.178.102:8500.

How To Use The Ready-Made Image

FreeBSD 12.1:
pot import -p consul-amd64-12_1 -t 1.0 -U https://potluck.honeyguide.net/consul

FreeBSD 11.4:
pot import -p consul-amd64-11_4 -t 1.0 -U https://potluck.honeyguide.net/consul

Note: Some images might require specific network configuration, double check the Overview-chapter at the top.

Alternatively: Create a Jail With This Flavour Yourself

1. Create Flavour Files

Create the following
/usr/local/etc/pot/flavours/consul.sh
and
chmod ugo+x /usr/local/etc/pot/flavours/consul.sh

#!/bin/sh

# EDIT THE FOLLOWING FOR NEW FLAVOUR:
# 1. RUNS_IN_NOMAD - yes or no
# 2. Adjust package installation between BEGIN & END PACKAGE SETUP
# 3. Adjust jail configuration script generation between BEGIN & END COOK

# Set this to true if this jail flavour is to be created as a nomad (i.e. blocking) jail.
# You can then query it in the cook script generation below and the script is installed
# appropriately at the end of this script 
RUNS_IN_NOMAD=false

# -------------- BEGIN PACKAGE SETUP -------------
[ -w /etc/pkg/FreeBSD.conf ] && sed -i '' 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
ASSUME_ALWAYS_YES=yes pkg bootstrap
touch /etc/rc.conf
sysrc sendmail_enable="NO"
sysrc consul_enable="YES"

# Install packages
pkg install -y consul 
pkg clean -y
# -------------- END PACKAGE SETUP -------------

#
# Create configurations
#

#
# Now generate the run command script "cook"
# It configures the system on the first run by creating the config file(s) 
# On subsequent runs, it only starts sleeps (if nomad-jail) or simply exits 
#

# ----------------- BEGIN COOK ------------------ 
echo "#!/bin/sh

# No need to change this, just ensures configuration is done only once
if [ -e /usr/local/etc/pot-is-seasoned ]
then
    # If this pot flavour is blocking (i.e. it should not return), there is no /tmp/environment.sh
    # created by pot and we block indefinitely
    if [ ! -e /tmp/environment.sh ]
    then
        tail -f /dev/null 
    fi
    exit 0
fi

# ADJUST THIS: STOP SERVICES AS NEEDED BEFORE CONFIGURATION
/usr/local/etc/rc.d/consul stop  || true

# No need to adjust this:
# If this pot flavour is not blocking, we need to read the environment first from /tmp/environment.sh
# where pot is storing it in this case
if [ -e /tmp/environment.sh ]
then
    . /tmp/environment.sh
fi

#
# ADJUST THIS BY CHECKING FOR ALL VARIABLES YOUR FLAVOUR NEEDS:
# Check config variables are set
#
if [ -z \${DATACENTER+x} ]; 
then 
    echo 'DATACENTER is unset - see documentation how to configure this flavour'
    exit 1
fi
if [ -z \${NODENAME+x} ]; 
then 
    echo 'NODENAME is unset - see documentation how to configure this flavour'
    exit 1
fi
if [ -z \${IP+x} ];
then
    echo 'IP is unset - see documentation how to configure this flavour'
    exit 1
fi

# ADJUST THIS BELOW: NOW ALL THE CONFIGURATION FILES NEED TO BE CREATED:
# Don't forget to double(!)-escape quotes and dollar signs in the config files

# Create consul server config file 
mkdir /usr/local/etc/consul.d
echo \"
{
 \\\"bind_addr\\\": \\\"0.0.0.0\\\",
 \\\"client_addr\\\": \\\"0.0.0.0\\\",
 \\\"datacenter\\\": \\\"\$DATACENTER\\\",
 \\\"dns_config\\\": {
   \\\"a_record_limit\\\": 3,
   \\\"enable_truncate\\\": true
 },
 \\\"enable_syslog\\\": true,
 \\\"leave_on_terminate\\\": true,
 \\\"log_level\\\": \\\"WARN\\\",
 \\\"node_name\\\": \\\"\$NODENAME\\\",
 \\\"translate_wan_addrs\\\": true,
 \\\"ui\\\": true,
 \\\"server\\\": true,
 \\\"bootstrap_expect\\\": 1
}\" > /usr/local/etc/consul.d/agent.json
echo \"consul_args=\\\"-advertise \$IP\\\"\" >> /etc/rc.conf

# ADJUST THIS: START THE SERVICES AGAIN AFTER CONFIGURATION
/usr/local/etc/rc.d/consul start

# Do not touch this:
touch /usr/local/etc/pot-is-seasoned

# If this pot flavour is blocking (i.e. it should not return), there is no /tmp/environment.sh
# created by pot and we now after configuration block indefinitely
if [ ! -e /tmp/environment.sh ]
then
    tail -f /dev/null
fi
" > /usr/local/bin/cook

# ----------------- END COOK ------------------


# ---------- NO NEED TO EDIT BELOW ------------

chmod u+x /usr/local/bin/cook

#
# There are two ways of running a pot jail: "Normal", non-blocking mode and
# "Nomad", i.e. blocking mode (the pot start command does not return until
# the jail is stopped).
# For the normal mode, we create a /usr/local/etc/rc.d script that starts
# the "cook" script generated above each time, for the "Nomad" mode, the cook
# script is started by pot (configuration through flavour file), therefore
# we do not need to do anything here.
# 

# Create rc.d script for "normal" mode:
echo "#!/bin/sh

#
# PROVIDE: cook 
# REQUIRE: LOGIN
# KEYWORD: shutdown
#

. /etc/rc.subr

name=cook
rcvar=cook_enable

load_rc_config $name

: ${cook_enable:=\"NO\"}
: ${cook_env:=\"\"}

command=\"/usr/local/bin/cook\"
command_args=\"\"

run_rc_command \"\$1\"
" > /usr/local/etc/rc.d/cook

chmod u+x /usr/local/etc/rc.d/cook

if [ $RUNS_IN_NOMAD = false ]
then
    # This is a non-nomad (non-blocking) jail, so we need to make sure the script
    # gets started when the jail is started:
    # Otherwise, /usr/local/bin/cook will be set as start script by the pot flavour
    echo "cook_enable=\"YES\"" >> /etc/rc.conf
fi

2. Create Jail From Flavour

Run
pot create -b <FreeBSD Version> -p <jailname> -t single -N public-bridge -f fbsd-update -f consul

with your FreeBSD version (e.g. 12.1) and the name your jail should get.

Note: Some images might require specific network configuration, double check the Overview-chapter at the top.

Version History

1.0

  • Initial commit

These images were built on Tue Jul 21 16:32:07 UTC 2020

Manual Image Download Links

consul-amd64-12_1_1.0.xz ( 249.461 MB )
consul-amd64-12_1_1.0.xz.skein ( 0.250977 KB )

consul-amd64-11_4_1.0.xz ( 214.128 MB )
consul-amd64-11_4_1.0.xz.skein ( 0.250977 KB )

Jenkins Pot Creation Logs

consul-amd64-12_1_1.0:


consul/consul:
consul/consul.sh:
#!/bin/sh

# EDIT THE FOLLOWING FOR NEW FLAVOUR:
# 1. RUNS_IN_NOMAD - yes or no
# 2. Adjust package installation between BEGIN & END PACKAGE SETUP
# 3. Adjust jail configuration script generation between BEGIN & END COOK

# Set this to true if this jail flavour is to be created as a nomad (i.e. blocking) jail.
# You can then query it in the cook script generation below and the script is installed
# appropriately at the end of this script 
RUNS_IN_NOMAD=false

# -------------- BEGIN PACKAGE SETUP -------------
[ -w /etc/pkg/FreeBSD.conf ] && sed -i '' 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
ASSUME_ALWAYS_YES=yes pkg bootstrap
touch /etc/rc.conf
sysrc sendmail_enable="NO"
sysrc consul_enable="YES"

# Install packages
pkg install -y consul 
pkg clean -y
# -------------- END PACKAGE SETUP -------------

#
# Create configurations
#

#
# Now generate the run command script "cook"
# It configures the system on the first run by creating the config file(s) 
# On subsequent runs, it only starts sleeps (if nomad-jail) or simply exits 
#

# ----------------- BEGIN COOK ------------------ 
echo "#!/bin/sh

# No need to change this, just ensures configuration is done only once
if [ -e /usr/local/etc/pot-is-seasoned ]
then
    # If this pot flavour is blocking (i.e. it should not return), there is no /tmp/environment.sh
    # created by pot and we block indefinitely
    if [ ! -e /tmp/environment.sh ]
    then
        tail -f /dev/null 
    fi
    exit 0
fi

# ADJUST THIS: STOP SERVICES AS NEEDED BEFORE CONFIGURATION
/usr/local/etc/rc.d/consul stop  || true

# No need to adjust this:
# If this pot flavour is not blocking, we need to read the environment first from /tmp/environment.sh
# where pot is storing it in this case
if [ -e /tmp/environment.sh ]
then
    . /tmp/environment.sh
fi

#
# ADJUST THIS BY CHECKING FOR ALL VARIABLES YOUR FLAVOUR NEEDS:
# Check config variables are set
#
if [ -z \${DATACENTER+x} ]; 
then 
    echo 'DATACENTER is unset - see documentation how to configure this flavour'
    exit 1
fi
if [ -z \${NODENAME+x} ]; 
then 
    echo 'NODENAME is unset - see documentation how to configure this flavour'
    exit 1
fi
if [ -z \${IP+x} ];
then
    echo 'IP is unset - see documentation how to configure this flavour'
    exit 1
fi

# ADJUST THIS BELOW: NOW ALL THE CONFIGURATION FILES NEED TO BE CREATED:
# Don't forget to double(!)-escape quotes and dollar signs in the config files

# Create consul server config file 
mkdir /usr/local/etc/consul.d
echo \"
{
 \\\"bind_addr\\\": \\\"0.0.0.0\\\",
 \\\"client_addr\\\": \\\"0.0.0.0\\\",
 \\\"datacenter\\\": \\\"\$DATACENTER\\\",
 \\\"dns_config\\\": {
   \\\"a_record_limit\\\": 3,
   \\\"enable_truncate\\\": true
 },
 \\\"enable_syslog\\\": true,
 \\\"leave_on_terminate\\\": true,
 \\\"log_level\\\": \\\"WARN\\\",
 \\\"node_name\\\": \\\"\$NODENAME\\\",
 \\\"translate_wan_addrs\\\": true,
 \\\"ui\\\": true,
 \\\"server\\\": true,
 \\\"bootstrap_expect\\\": 1
}\" > /usr/local/etc/consul.d/agent.json
echo \"consul_args=\\\"-advertise \$IP\\\"\" >> /etc/rc.conf

# ADJUST THIS: START THE SERVICES AGAIN AFTER CONFIGURATION
/usr/local/etc/rc.d/consul start

# Do not touch this:
touch /usr/local/etc/pot-is-seasoned

# If this pot flavour is blocking (i.e. it should not return), there is no /tmp/environment.sh
# created by pot and we now after configuration block indefinitely
if [ ! -e /tmp/environment.sh ]
then
    tail -f /dev/null
fi
" > /usr/local/bin/cook

# ----------------- END COOK ------------------


# ---------- NO NEED TO EDIT BELOW ------------

chmod u+x /usr/local/bin/cook

#
# There are two ways of running a pot jail: "Normal", non-blocking mode and
# "Nomad", i.e. blocking mode (the pot start command does not return until
# the jail is stopped).
# For the normal mode, we create a /usr/local/etc/rc.d script that starts
# the "cook" script generated above each time, for the "Nomad" mode, the cook
# script is started by pot (configuration through flavour file), therefore
# we do not need to do anything here.
# 

# Create rc.d script for "normal" mode:
echo "#!/bin/sh

#
# PROVIDE: cook 
# REQUIRE: LOGIN
# KEYWORD: shutdown
#

. /etc/rc.subr

name=cook
rcvar=cook_enable

load_rc_config $name

: ${cook_enable:=\"NO\"}
: ${cook_env:=\"\"}

command=\"/usr/local/bin/cook\"
command_args=\"\"

run_rc_command \"\$1\"
" > /usr/local/etc/rc.d/cook

chmod u+x /usr/local/etc/rc.d/cook

if [ $RUNS_IN_NOMAD = false ]
then
    # This is a non-nomad (non-blocking) jail, so we need to make sure the script
    # gets started when the jail is started:
    # Otherwise, /usr/local/bin/cook will be set as start script by the pot flavour
    echo "cook_enable=\"YES\"" >> /etc/rc.conf
fi

consul/consul+1:
consul/consul+1.sh:

consul/consul+2:
consul/consul+2.sh:

consul/consul+3:
consul/consul+3.sh:

consul/consul+4:
consul/consul+4.sh:
Password:=====>  -i auto: assigned 10.192.0.3
===>  Creating a new pot
===>  pot name : consul-amd64-12_1
===>  type : single
===>  base : 12.1
===>  pot_base :
===>  level : 0
===>  network-type: public-bridge
===>  ip : 10.192.0.3
===>  bridge :
===>  dns : inherit
===>  flavours : fbsd-update consul consul+1 consul+2 consul+3 consul+4
===>  Fetching FreeBSD 12.1
===>  Extract the tarball
=====>  Flavour: fbsd-update
=====>  Starting consul-amd64-12_1 pot for the initial bootstrap
=====>  mount /var/pot/jails/consul-amd64-12_1/m/tmp
defaultrouter: NO -> 10.192.0.1
===>  Starting the pot consul-amd64-12_1
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
32-bit compatibility ldconfig path: /usr/lib32
Starting Network: lo0 epair0b.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	inet 127.0.0.1 netmask 0xff000000
	groups: lo
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
epair0b: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=8<VLAN_MTU>
	ether 02:94:9a:16:44:0b
	inet 10.192.0.3 netmask 0xffc00000 broadcast 10.255.255.255
	groups: epair
	media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
	status: active
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
add host 127.0.0.1: gateway lo0 fib 0: route already in table
add net default: gateway 10.192.0.1
add host ::1: gateway lo0 fib 0: route already in table
add net fe80::: gateway ::1
add net ff02::: gateway ::1
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
Generating host.conf.
Creating and/or trimming log files.
Starting syslogd.
Clearing /tmp (X related).
Updating motd:.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.

Tue Jul 21 16:27:12 UTC 2020
/usr/local/etc/pot/flavours/fbsd-update.sh -> /var/pot/jails/consul-amd64-12_1/m/tmp/fbsd-update.sh
=====>  Executing fbsd-update script on consul-amd64-12_1
src component not installed, skipped
freebsd-update fetch should not be run non-interactively.
Run freebsd-update cron instead.
src component not installed, skipped
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.
=====>  Stop the pot consul-amd64-12_1
=====>  Remove epair0[a|b] network interfaces
=====>  unmount /var/pot/jails/consul-amd64-12_1/m/tmp
=====>  unmount /var/pot/jails/consul-amd64-12_1/m/dev
=====>  Flavour: consul
=====>  Executing consul pot commands on consul-amd64-12_1
=====>  Starting consul-amd64-12_1 pot for the initial bootstrap
=====>  mount /var/pot/jails/consul-amd64-12_1/m/tmp
defaultrouter: 10.192.0.1 -> 10.192.0.1
===>  Starting the pot consul-amd64-12_1
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
32-bit compatibility ldconfig path: /usr/lib32
Starting Network: lo0 epair0b.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	inet 127.0.0.1 netmask 0xff000000
	groups: lo
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
epair0b: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=8<VLAN_MTU>
	ether 02:e1:7f:48:d0:0b
	inet 10.192.0.3 netmask 0xffc00000 broadcast 10.255.255.255
	groups: epair
	media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
	status: active
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
add host 127.0.0.1: gateway lo0 fib 0: route already in table
add net default: gateway 10.192.0.1
add host ::1: gateway lo0 fib 0: route already in table
add net fe80::: gateway ::1
add net ff02::: gateway ::1
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
Creating and/or trimming log files.
Starting syslogd.
Clearing /tmp (X related).
Updating motd:.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.

Tue Jul 21 16:27:17 UTC 2020
/usr/local/etc/pot/flavours/consul.sh -> /var/pot/jails/consul-amd64-12_1/m/tmp/consul.sh
=====>  Executing consul script on consul-amd64-12_1
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] Installing pkg-1.14.6...
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] Extracting pkg-1.14.6: .......... done
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/latest, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
sendmail_enable: NO -> NO
consul_enable:  -> YES
Updating FreeBSD repository catalogue...
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] Fetching meta.conf: . done
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] Fetching packagesite.txz: .......... done
Processing entries: .......... done
FreeBSD repository update completed. 31974 packages processed.
All repositories are up to date.
Updating database digests format: . done
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	consul: 1.8.0

Number of packages to be installed: 1

The process will require 97 MiB more space.
32 MiB to be downloaded.
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] [1/1] Fetching consul-1.8.0.txz: .......... done
Checking integrity... done (0 conflicting)
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] [1/1] Installing consul-1.8.0...
===> Creating groups.
Creating group 'consul' with gid '469'.
===> Creating users
Creating user 'consul' with uid '469'.
===> Creating homedir(s)
[consul-amd64-12_1.vsf00001.cpt.za.honeyguide.net] [1/1] Extracting consul-1.8.0: ..... done
Nothing to do.
=====>  Stop the pot consul-amd64-12_1
=====>  Remove epair0[a|b] network interfaces
=====>  unmount /var/pot/jails/consul-amd64-12_1/m/tmp
=====>  unmount /var/pot/jails/consul-amd64-12_1/m/dev
=====>  Flavour: consul+1
=====>  Executing consul+1 pot commands on consul-amd64-12_1
=====>  No shell script available for the flavour consul+1
=====>  Flavour: consul+2
=====>  Executing consul+2 pot commands on consul-amd64-12_1
=====>  No shell script available for the flavour consul+2
=====>  Flavour: consul+3
=====>  Executing consul+3 pot commands on consul-amd64-12_1
=====>  No shell script available for the flavour consul+3
=====>  Flavour: consul+4
=====>  Executing consul+4 pot commands on consul-amd64-12_1
=====>  No shell script available for the flavour consul+4

consul-amd64-11_4_1.0:


consul/consul:
consul/consul.sh:
#!/bin/sh

# EDIT THE FOLLOWING FOR NEW FLAVOUR:
# 1. RUNS_IN_NOMAD - yes or no
# 2. Adjust package installation between BEGIN & END PACKAGE SETUP
# 3. Adjust jail configuration script generation between BEGIN & END COOK

# Set this to true if this jail flavour is to be created as a nomad (i.e. blocking) jail.
# You can then query it in the cook script generation below and the script is installed
# appropriately at the end of this script 
RUNS_IN_NOMAD=false

# -------------- BEGIN PACKAGE SETUP -------------
[ -w /etc/pkg/FreeBSD.conf ] && sed -i '' 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
ASSUME_ALWAYS_YES=yes pkg bootstrap
touch /etc/rc.conf
sysrc sendmail_enable="NO"
sysrc consul_enable="YES"

# Install packages
pkg install -y consul 
pkg clean -y
# -------------- END PACKAGE SETUP -------------

#
# Create configurations
#

#
# Now generate the run command script "cook"
# It configures the system on the first run by creating the config file(s) 
# On subsequent runs, it only starts sleeps (if nomad-jail) or simply exits 
#

# ----------------- BEGIN COOK ------------------ 
echo "#!/bin/sh

# No need to change this, just ensures configuration is done only once
if [ -e /usr/local/etc/pot-is-seasoned ]
then
    # If this pot flavour is blocking (i.e. it should not return), there is no /tmp/environment.sh
    # created by pot and we block indefinitely
    if [ ! -e /tmp/environment.sh ]
    then
        tail -f /dev/null 
    fi
    exit 0
fi

# ADJUST THIS: STOP SERVICES AS NEEDED BEFORE CONFIGURATION
/usr/local/etc/rc.d/consul stop  || true

# No need to adjust this:
# If this pot flavour is not blocking, we need to read the environment first from /tmp/environment.sh
# where pot is storing it in this case
if [ -e /tmp/environment.sh ]
then
    . /tmp/environment.sh
fi

#
# ADJUST THIS BY CHECKING FOR ALL VARIABLES YOUR FLAVOUR NEEDS:
# Check config variables are set
#
if [ -z \${DATACENTER+x} ]; 
then 
    echo 'DATACENTER is unset - see documentation how to configure this flavour'
    exit 1
fi
if [ -z \${NODENAME+x} ]; 
then 
    echo 'NODENAME is unset - see documentation how to configure this flavour'
    exit 1
fi
if [ -z \${IP+x} ];
then
    echo 'IP is unset - see documentation how to configure this flavour'
    exit 1
fi

# ADJUST THIS BELOW: NOW ALL THE CONFIGURATION FILES NEED TO BE CREATED:
# Don't forget to double(!)-escape quotes and dollar signs in the config files

# Create consul server config file 
mkdir /usr/local/etc/consul.d
echo \"
{
 \\\"bind_addr\\\": \\\"0.0.0.0\\\",
 \\\"client_addr\\\": \\\"0.0.0.0\\\",
 \\\"datacenter\\\": \\\"\$DATACENTER\\\",
 \\\"dns_config\\\": {
   \\\"a_record_limit\\\": 3,
   \\\"enable_truncate\\\": true
 },
 \\\"enable_syslog\\\": true,
 \\\"leave_on_terminate\\\": true,
 \\\"log_level\\\": \\\"WARN\\\",
 \\\"node_name\\\": \\\"\$NODENAME\\\",
 \\\"translate_wan_addrs\\\": true,
 \\\"ui\\\": true,
 \\\"server\\\": true,
 \\\"bootstrap_expect\\\": 1
}\" > /usr/local/etc/consul.d/agent.json
echo \"consul_args=\\\"-advertise \$IP\\\"\" >> /etc/rc.conf

# ADJUST THIS: START THE SERVICES AGAIN AFTER CONFIGURATION
/usr/local/etc/rc.d/consul start

# Do not touch this:
touch /usr/local/etc/pot-is-seasoned

# If this pot flavour is blocking (i.e. it should not return), there is no /tmp/environment.sh
# created by pot and we now after configuration block indefinitely
if [ ! -e /tmp/environment.sh ]
then
    tail -f /dev/null
fi
" > /usr/local/bin/cook

# ----------------- END COOK ------------------


# ---------- NO NEED TO EDIT BELOW ------------

chmod u+x /usr/local/bin/cook

#
# There are two ways of running a pot jail: "Normal", non-blocking mode and
# "Nomad", i.e. blocking mode (the pot start command does not return until
# the jail is stopped).
# For the normal mode, we create a /usr/local/etc/rc.d script that starts
# the "cook" script generated above each time, for the "Nomad" mode, the cook
# script is started by pot (configuration through flavour file), therefore
# we do not need to do anything here.
# 

# Create rc.d script for "normal" mode:
echo "#!/bin/sh

#
# PROVIDE: cook 
# REQUIRE: LOGIN
# KEYWORD: shutdown
#

. /etc/rc.subr

name=cook
rcvar=cook_enable

load_rc_config $name

: ${cook_enable:=\"NO\"}
: ${cook_env:=\"\"}

command=\"/usr/local/bin/cook\"
command_args=\"\"

run_rc_command \"\$1\"
" > /usr/local/etc/rc.d/cook

chmod u+x /usr/local/etc/rc.d/cook

if [ $RUNS_IN_NOMAD = false ]
then
    # This is a non-nomad (non-blocking) jail, so we need to make sure the script
    # gets started when the jail is started:
    # Otherwise, /usr/local/bin/cook will be set as start script by the pot flavour
    echo "cook_enable=\"YES\"" >> /etc/rc.conf
fi

consul/consul+1:
consul/consul+1.sh:

consul/consul+2:
consul/consul+2.sh:

consul/consul+3:
consul/consul+3.sh:

consul/consul+4:
consul/consul+4.sh:
Password:=====>  -i auto: assigned 10.192.0.4
===>  Creating a new pot
===>  pot name : consul-amd64-11_4
===>  type : single
===>  base : 11.4
===>  pot_base :
===>  level : 0
===>  network-type: public-bridge
===>  ip : 10.192.0.4
===>  bridge :
===>  dns : inherit
===>  flavours : fbsd-update consul consul+1 consul+2 consul+3 consul+4
===>  Fetching FreeBSD 11.4
===>  Extract the tarball
=====>  Flavour: fbsd-update
=====>  Starting consul-amd64-11_4 pot for the initial bootstrap
=====>  mount /var/pot/jails/consul-amd64-11_4/m/tmp
defaultrouter: NO -> 10.192.0.1
===>  Starting the pot consul-amd64-11_4
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
32-bit compatibility ldconfig path: /usr/lib32
Starting Network: lo0 epair0b.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	inet 127.0.0.1 netmask 0xff000000
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
	groups: lo
epair0b: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=8<VLAN_MTU>
	ether 02:c2:16:4e:80:0b
	hwaddr 02:c2:16:4e:80:0b
	inet 10.192.0.4 netmask 0xffc00000 broadcast 10.255.255.255
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
	status: active
	groups: epair
add host 127.0.0.1: gateway lo0 fib 0: route already in table
add net default: gateway 10.192.0.1
add host ::1: gateway lo0 fib 0: route already in table
add net fe80::: gateway ::1
add net ff02::: gateway ::1
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
Generating host.conf.
Creating and/or trimming log files.
Starting syslogd.
Clearing /tmp (X related).
Updating motd:.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.

Tue Jul 21 16:29:58 UTC 2020
/usr/local/etc/pot/flavours/fbsd-update.sh -> /var/pot/jails/consul-amd64-11_4/m/tmp/fbsd-update.sh
=====>  Executing fbsd-update script on consul-amd64-11_4
src component not installed, skipped
freebsd-update fetch should not be run non-interactively.
Run freebsd-update cron instead.
src component not installed, skipped
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.
=====>  Stop the pot consul-amd64-11_4
=====>  Remove epair0[a|b] network interfaces
=====>  unmount /var/pot/jails/consul-amd64-11_4/m/tmp
=====>  unmount /var/pot/jails/consul-amd64-11_4/m/dev
=====>  Flavour: consul
=====>  Executing consul pot commands on consul-amd64-11_4
=====>  Starting consul-amd64-11_4 pot for the initial bootstrap
=====>  mount /var/pot/jails/consul-amd64-11_4/m/tmp
defaultrouter: 10.192.0.1 -> 10.192.0.1
===>  Starting the pot consul-amd64-11_4
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
32-bit compatibility ldconfig path: /usr/lib32
Starting Network: lo0 epair0b.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	inet 127.0.0.1 netmask 0xff000000
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
	groups: lo
epair0b: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=8<VLAN_MTU>
	ether 02:b4:a6:7b:13:0b
	hwaddr 02:b4:a6:7b:13:0b
	inet 10.192.0.4 netmask 0xffc00000 broadcast 10.255.255.255
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
	status: active
	groups: epair
add host 127.0.0.1: gateway lo0 fib 0: route already in table
add net default: gateway 10.192.0.1
add host ::1: gateway lo0 fib 0: route already in table
add net fe80::: gateway ::1
add net ff02::: gateway ::1
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
Creating and/or trimming log files.
Starting syslogd.
Clearing /tmp (X related).
Updating motd:.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.

Tue Jul 21 16:30:04 UTC 2020
/usr/local/etc/pot/flavours/consul.sh -> /var/pot/jails/consul-amd64-11_4/m/tmp/consul.sh
=====>  Executing consul script on consul-amd64-11_4
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] Installing pkg-1.14.6...
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] Extracting pkg-1.14.6: .......... done
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/latest, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
sendmail_enable: NO -> NO
consul_enable:  -> YES
Updating FreeBSD repository catalogue...
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] Fetching meta.conf: . done
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] Fetching packagesite.txz: .......... done
Processing entries: .......... done
FreeBSD repository update completed. 30777 packages processed.
All repositories are up to date.
Updating database digests format: . done
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	consul: 1.8.0

Number of packages to be installed: 1

The process will require 97 MiB more space.
32 MiB to be downloaded.
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] [1/1] Fetching consul-1.8.0.txz: .......... done
Checking integrity... done (0 conflicting)
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] [1/1] Installing consul-1.8.0...
===> Creating groups.
Creating group 'consul' with gid '469'.
===> Creating users
Creating user 'consul' with uid '469'.
===> Creating homedir(s)
[consul-amd64-11_4.vsf00001.cpt.za.honeyguide.net] [1/1] Extracting consul-1.8.0: ..... done
Nothing to do.
=====>  Stop the pot consul-amd64-11_4
=====>  Remove epair0[a|b] network interfaces
=====>  unmount /var/pot/jails/consul-amd64-11_4/m/tmp
=====>  unmount /var/pot/jails/consul-amd64-11_4/m/dev
=====>  Flavour: consul+1
=====>  Executing consul+1 pot commands on consul-amd64-11_4
=====>  No shell script available for the flavour consul+1
=====>  Flavour: consul+2
=====>  Executing consul+2 pot commands on consul-amd64-11_4
=====>  No shell script available for the flavour consul+2
=====>  Flavour: consul+3
=====>  Executing consul+3 pot commands on consul-amd64-11_4
=====>  No shell script available for the flavour consul+3
=====>  Flavour: consul+4
=====>  Executing consul+4 pot commands on consul-amd64-11_4
=====>  No shell script available for the flavour consul+4

This site © Honeyguide Group (Pty) Ltd, all the hosted software their respective license owners 2020 - Disclaimer