mirror of
https://github.com/xcat2/confluent.git
synced 2025-01-16 04:39:16 +00:00
181aa876a7
For older Ubuntu 18, the automated installer is debian-installer. Derive from the prototype debian work, with same limitation about more limited network bringup that we are stuck with from Debian limitations.
165 lines
6.7 KiB
Plaintext
165 lines
6.7 KiB
Plaintext
reverse_uuid() {
|
|
echo $1 | head -c 8 | tail -c 2
|
|
echo $1 | head -c 6 | tail -c 2
|
|
echo $1 | head -c 4 | tail -c 2
|
|
echo $1 | head -c 2 | tail -c 2
|
|
echo $1 | head -c 13 | tail -c 2
|
|
echo $1 | head -c 11 | tail -c 2
|
|
echo $1 | head -c 18 | tail -c 2
|
|
echo $1 | head -c 16 | tail -c 2
|
|
echo $1 | tail -c 18 | sed -e s/-//
|
|
}
|
|
setdebopt() {
|
|
debconf-set $1 $2
|
|
echo d-i $1 $3 $2 >> /preseed.cfg
|
|
}
|
|
|
|
mkdir -p /etc/confluent
|
|
for i in /sys/class/net/*; do
|
|
ip link set $(basename $i) up
|
|
done
|
|
TRIES=5
|
|
while [ ! -e /dev/disk ] && [ $TRIES -gt 0 ]; do
|
|
sleep 2
|
|
TRIES=$((TRIES - 1))
|
|
done
|
|
for i in /sys/class/net/*; do
|
|
ip link set $(basename $i) up
|
|
done
|
|
cp -a /tls/* /etc/ssl/certs/
|
|
if [ -e /dev/disk/by-label/CNFLNT_IDNT ]; then
|
|
tmnt=$(mktemp -d)
|
|
tcfg=$(mktemp)
|
|
mount /dev/disk/by-label/CNFLNT_IDNT $tmnt
|
|
cd $tmnt
|
|
deploysrvs=$(sed -n '/^deploy_servers:/,/^[^-]/p' cnflnt.yml |grep ^-|sed -e 's/^- //'|grep -v :)
|
|
nodename=$(grep ^nodename: cnflnt.yml|cut -f 2 -d ' ')
|
|
sed -n '/^net_cfgs:/,/^[^- ]/{/^[^- ]/!p}' cnflnt.yml |sed -n '/^-/,/^-/{/^-/!p}'| sed -e 's/^[- ]*//'> $tcfg
|
|
autoconfigmethod=$(grep ^ipv4_method: $tcfg)
|
|
autoconfigmethod=${autoconfigmethod#ipv4_method: }
|
|
NICGUESS=$(ip link|grep LOWER_UP|grep -v LOOPBACK|cut -d ' ' -f 2 | sed -e 's/:$//'|head -n 1)
|
|
if [ "$autoconfigmethod" = "static" ]; then
|
|
setdebopt netcfg/disable_dhcp true boolean
|
|
v4addr=$(grep ^ipv4_address: $tcfg|cut -d: -f 2|sed -e 's/ //')
|
|
v4gw=$(grep ^ipv4_gateway: $tcfg|cut -d: -f 2| sed -e 's/ //')
|
|
if [ "$v4gw" = "null" ]; then
|
|
v4gw=""
|
|
fi
|
|
v4nm=$(grep ^ipv4_netmask: $tcfg|cut -d: -f 2|sed -e 's/ //')
|
|
setdebopt netcfg/get_netmask $v4nm string
|
|
setdebopt netcfg/get_ipaddress ${v4addr%/*} string
|
|
setdebopt netcfg/confirm_static true boolean
|
|
ip addr add dev $NICGUESS $v4addr
|
|
if [ ! -z "$v4gw" ]; then
|
|
setdebopt netcfg/get_gateway $v4gw string
|
|
ip route add default via $v4gw
|
|
fi
|
|
#TODO: nameservers
|
|
elif [ "$v4cfgmeth" = "dhcp" ]; then
|
|
setdebopt netcfg/disable_dhcp false boolean
|
|
setdebopt netcfg/confirm_static false boolean
|
|
udhcpc $NICGUESS
|
|
fi
|
|
mgr=$deploysrvs
|
|
ln -s /opt/confluent/bin/clortho /opt/confluent/bin/genpasshmac
|
|
hmackeyfile=/tmp/cnflnthmackeytmp
|
|
passfile=/tmp/cnflnttmppassfile
|
|
passcrypt=/tmp/cnflntcryptfile
|
|
hmacfile=/tmp/cnflnthmacfile
|
|
echo -n $(grep ^apitoken: cnflnt.yml|cut -d ' ' -f 2) > $hmackeyfile
|
|
wget --header="CONFLUENT_NODENAME: $nodename" --header="CONFLUENT_CRYPTHMAC: $(cat $hmacfile)" --post-file=$passcrypt https://$mgr/confluent-api/self/registerapikey -O - --quiet
|
|
rm registerapikey
|
|
cp $passfile /etc/confluent/confluent.apikey
|
|
nic=$NICGUESS
|
|
else
|
|
dhuuid=$(reverse_uuid $(cat /sys/devices/virtual/dmi/id/product_uuid))
|
|
dhcpid=$(mktemp)
|
|
mkdir -p /etc/confluent
|
|
cp /tls/* /etc/ssl/certs/
|
|
for nic in $(ip link | grep mtu|grep -v LOOPBACK|cut -d: -f 2|sed -e 's/ //'); do
|
|
ip link set $nic up
|
|
done
|
|
for nic in $(ip link | grep mtu|grep -v LOOPBACK|grep LOWER_UP|cut -d: -f 2|sed -e 's/ //'); do
|
|
if udhcpc -i $nic -p $dhcpid -t 2 -T 2 -n -x 93:0007 -x 97:00$dhuuid -q; then
|
|
/opt/confluent/bin/copernicus > /etc/confluent/confluent.info
|
|
if grep ^MANAGER:.*\\. /etc/confluent/confluent.info ; then
|
|
break
|
|
fi
|
|
fi
|
|
ip -4 flush dev $nic
|
|
done
|
|
mgr=$(grep ^MANAGER:.*\\. /etc/confluent/confluent.info|head -n 1|cut -d: -f 2|sed -e 's/ //')
|
|
nodename=$(grep ^NODENAME: /etc/confluent/confluent.info|head -n 1|cut -d: -f 2|sed -e 's/ //')
|
|
/opt/confluent/bin/clortho $nodename $mgr > /etc/confluent/confluent.apikey
|
|
fi
|
|
apikey=$(cat /etc/confluent/confluent.apikey)
|
|
cd /etc/confluent
|
|
wget --header="CONFLUENT_NODENAME: $nodename" --header="CONFLUENT_APIKEY: $apikey" https://$mgr/confluent-api/self/deploycfg
|
|
cd -
|
|
predir=$(mktemp -d)
|
|
cd $predir
|
|
profile=$(grep ^profile: /etc/confluent/deploycfg|cut -d ' ' -f 2)
|
|
namesrvs=$(sed -n '/^nameservers:/,/^[^-]/p' /etc/confluent/deploycfg|grep ^- | cut -d ' ' -f 2|sed -e 's/ //')
|
|
for namesrv in "$namesrvs"; do
|
|
setdebopt netcfg/get_nameservers $namesrv string
|
|
done
|
|
rootpass=$(grep ^rootpassword: /etc/confluent/deploycfg|cut -d ' ' -f 2|sed -e 's/ //')
|
|
if [ "$rootpass" = null ] || [ -z "$rootpass" ]; then
|
|
setdebopt passwd/root-login false boolean
|
|
else
|
|
setdebopt passwd/root-login true boolean
|
|
setdebopt passwd/root-password-crypted $rootpass string
|
|
fi
|
|
setdebopt time/zone $(grep ^timezone: /etc/confluent/deploycfg|cut -d ' ' -f 2|sed -e 's/ //') string
|
|
ntpsrvs=$(sed -n '/^ntpservers:/,/^[^-]/p' /etc/confluent/deploycfg|grep ^- | cut -d ' ' -f 2|sed -e 's/ //')
|
|
for ntpsrv in "$ntpsrvs"; do
|
|
setdebopt clock-setup/ntp true boolean
|
|
setdebopt clock-setup/ntep-server $ntpsrv string
|
|
done
|
|
setdebopt debian-installer/locale $(grep ^locale: /etc/confluent/deploycfg|cut -d ' ' -f 2) select
|
|
domainname=$(grep ^dnsdomain: /etc/confluent/deploycfg|cut -d ' ' -f 2)
|
|
if [ ! -z "$domainname" ] && [ "$domainname" != "null" ]; then
|
|
setdebopt netcfg/get_domain $domainname string
|
|
fi
|
|
|
|
|
|
|
|
|
|
wget https://$mgr/confluent-public/os/$profile/scripts/pre.sh
|
|
chmod u+x pre.sh
|
|
wget https://$mgr/confluent-public/os/$profile/preseed.cfg
|
|
cat preseed.cfg >> /preseed.cfg
|
|
setdebopt auto-install/enable true boolean
|
|
setdebopt partman/early_command $predir/pre.sh string
|
|
cd -
|
|
ip -4 a flush dev $nic
|
|
setdebopt netcfg/choose_interface $nic select
|
|
setdebopt netcfg/get_hostname $nodename string
|
|
if [ ! -e /dev/disk/by-label/CNFLNT_IDNT ]; then
|
|
v4cfgmeth=$(grep ipv4_method: /etc/confluent/deploycfg |cut -d: -f 2|sed -e 's/ //')
|
|
if [ "$v4cfgmeth" = "static" ]; then
|
|
setdebopt netcfg/disable_dhcp true boolean
|
|
v4addr=$(grep ^ipv4_address: /etc/confluent/deploycfg|cut -d: -f 2|sed -e 's/ //')
|
|
v4gw=$(grep ^ipv4_gateway: /etc/confluent/deploycfg|cut -d: -f 2| sed -e 's/ //')
|
|
if [ "$v4gw" = "null" ]; then
|
|
v4gw=""
|
|
fi
|
|
v4nm=$(grep ^ipv4_netmask: /etc/confluent/deploycfg|cut -d: -f 2|sed -e 's/ //')
|
|
setdebopt netcfg/get_netmask $v4nm string
|
|
setdebopt netcfg/get_ipaddress $v4addr string
|
|
setdebopt netcfg/confirm_static true boolean
|
|
if [ ! -z "$v4gw" ]; then
|
|
setdebopt netcfg/get_gateway $v4gw string
|
|
fi
|
|
namesrvs=$(sed -n '/^nameservers:/,/^[^-]/p' /etc/confluent/deploycfg|grep ^- | cut -d ' ' -f 2|sed -e 's/ //')
|
|
for namesrv in "$namesrvs"; do
|
|
setdebopt netcfg/get_nameservers $namesrv string
|
|
done
|
|
elif [ "$vpcfgmeth" = "dhcp" ]; then
|
|
setdebopt netcfg/disable_dhcp false boolean
|
|
setdebopt netcfg/confirm_static false boolean
|
|
fi
|
|
fi
|
|
|
|
|