Сценарии Netplan для статического IP-адреса

Я отправил на форуме, но думал, что спросил бы здесь также. Так, я плохо знаком с Сервером Ubuntu 18.04, netplan и .yaml. В прошлом использовании Сервер Ubuntu 16.04 я смог создать довольно достойный сценарий оболочки для установки статического IP на сервере в установке после установки. Разве это не возможно к сценарию конфигурация сети теперь, когда Сервер Ubuntu 18.04 использует netplan? Я пытался настроить свой сценарий оболочки для конфигурирования записи в .yaml файл, но кажется, что форматирование крайне важно при редактировании .yaml файла, и у меня не было большой удачи. Кажется, что Ansible может возможно быть решением для этого, возможно? Но я имею все же ведущему устройству Ansible. У кого-либо еще есть удача при записи сценария для конфигурирования статического IP с помощью netplan и обновляя .yaml файл?

1
задан 13 August 2018 в 14:26

2 ответа

Это работает на меня, хотя я генерирую помехи от текущей конфигурации (не спрашивайте почему).

Просто замените IP-адресом свой статический IP и сетевую маску вместо того, чтобы динамично искать его как, я делаю.

Вы могли также изменить администратора сети также.

createStaticConnection.sh
------ END_CONFIG=/etc/netplan/01-network-card.yaml
generateAndApply() { sudo netplan generate sudo netplan apply }
getInternetInfo() { local INTERNET_INFO=$( ip r | grep default ) printf "%s" "$( echo $INTERNET_INFO | cut -f$1 -d' ' )" }
#static information NAMESERVERS=("1.1.1.1" "1.0.0.1") NETWORK_MANAGER="NetworkManager"
# information that varies IP="$( ip r | grep kernel | cut -f9 -d' ' )" GATEWAY="$( getInternetInfo 3 )" DEVICE_NAME="$( getInternetInfo 5 )" METHOD="$( getInternetInfo 7 )" PREFIX="$( ip r | grep kernel | cut -f1 -d' ' | cut -f2 -d'/' )"
createStaticYAML() { local YAML="network:\n" YAML+=" version: 2\n" YAML+=" renderer: $NETWORK_MANAGER\n" YAML+=" ethernets:\n" YAML+=" $DEVICE_NAME:\n" YAML+=" dhcp4: no\n" YAML+=" addresses: [$IP/$PREFIX]\n" YAML+=" gateway4: $GATEWAY\n" YAML+=" nameservers:\n" YAML+=" addresses: [${NAMESERVERS[0]},${NAMESERVERS[1]}]" printf "%s" "$YAML" }
clearConfigs() { [ -f $END_CONFIG ] && sudo rm $END_CONFIG }
setYAML() { sudo echo -e "$(createStaticYAML)" > $END_CONFIG }
clearConfigs setYAML generateAndApply restartNetwork

1
ответ дан 7 December 2019 в 13:22

@TygerTy спасибо за это. Я забыл отправлять развитие несколько недель назад. Это - то, что я придумал, который работал на меня:

#!/bin/bash
#
# Creates a backup
cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bk_`date +%Y%m%d%H%M`
# Changes dhcp from 'yes' to 'no'
sed -i "s/dhcp4: yes/dhcp4: no/g" /etc/netplan/01-netcfg.yaml
# Retrieves the NIC information
nic=`ifconfig | awk 'NR==1{print $1}'`
# Ask for input on network configuration
read -p "Enter the static IP of the server in CIDR notation: " staticip 
read -p "Enter the IP of your gateway: " gatewayip
read -p "Enter the IP of preferred nameservers (seperated by a coma if more than one): " nameserversip
echo
cat > /etc/netplan/01-netcfg.yaml <<EOF
network:
  version: 2
  renderer: networkd
  ethernets:
    $nic
      addresses:
        - $staticip
      gateway4: $gatewayip
      nameservers:
          addresses: [$nameserversip]
EOF
sudo netplan apply
echo "==========================="
echo
1
ответ дан 7 December 2019 в 13:22

Другие вопросы по тегам:

Похожие вопросы: