He encontrado un problema con la instalación automatizada del servidor.
Este es mi entorno: Servidor: centos 7.6 x86_64 (es un sistema kvm) Nodo1: sin sistema Nodo2: sin sistema
Quiero instalar automáticamente el sistema de servidor Ubuntu-20.04.3.
Acerca del Servidor1 instalo tftpd,dhcpd,httpd. algunas configuraciones como esta:
# tftpd
# cat /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
cps = 100 2
flags = IPv4
}
# dhcpd
# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
subnet 10.10.8.0 netmask 255.255.252.0 {
option routers 10.10.11.254;
option domain-name-servers 10.10.9.250;
option subnet-mask 255.255.252.0;
range dynamic-bootp 10.10.11.10 10.10.11.220;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.10.11.245;
filename "pxelinux.0";
}
# httpd
# cat /etc/httpd/conf.d/tftp.conf
<Directory /var/lib/tftpboot>
Options +FollowSymLinks +Indexes
Require all granted
</Directory>
Alias /tftp /var/lib/tftpboot
Archivos en/var/lib/tftpboot
# ll /var/lib/tftpboot/
总用量 1328744
drwxrwxrwx 2 root root 22 12月 8 18:40 grub
-rwxrwxrwx 1 root root 86017541 11月 25 17:40 initrd
-rwxrwxrwx 1 root root 31 11月 25 17:45 meta-data
-rwxrwxrwx 1 root root 336 12月 8 20:03 network.sh
-rwxrwxrwx 1 root root 1435512 4月 16 2020 pxelinux.0
-rwxrwxrwx 1 root root 1261371392 8月 24 17:09 ubuntu-20.04.3-live-server-amd64.iso
-rwxrwxrwx 1 root root 1353 12月 8 20:03 ubuntu_init.sh
-rwxrwxrwx 1 root root 2856 12月 8 20:17 user-data
-rwxrwxrwx 1 root root 11772160 11月 25 17:40 vmlinuz
grub.cfg
# cat grub/grub.cfg
default=autoinstall
timeout=5
timeout_style=menu
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Focal Live Installer - automated" --id=autoinstall {
echo "Loading Kernel...1111"
linux /vmlinuz root=/dev/ram0 ramdisk_size=1500000 root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.11.245/tftp/ubuntu-20.04.3-live-server-amd64.iso autoinstall ds=nocloud-net\;s=http://10.10.11.245/tftp/ ---
echo "Loading Ram Disk...111"
initrd /initrd
}
menuentry "Focal Live Installer" --id=install {
echo "Loading Kernel...22"
linux /vmlinuz root=/dev/ram0 ramdisk_size=1500000 ramdisk_size=1500000 ip=dhcp url=http://10.10.11.245/tftp/ubuntu-20.04.3-live-server-amd64.iso
echo "Loading Ram Disk...22"
initrd /initrd
}
metadatos
# cat meta-data
instance-id: focal-autoinstall
datos del usuario
# cat user-data
#cloud-config
autoinstall:
apt:
geoip: true
preserve_sources_list: false
primary:
- arches: [amd64, i386]
uri: http://mirrors.aliyun.com/ubuntu
- arches: [default]
uri: http://ports.ubuntu.com/ubuntu-ports
user-data:
timezone: Asia/Shanghai
disable_root: false
chpasswd:
list: |
root:$6$YMYlEcE71$/bcl2qd2rSYePvOkmgAyQR/h/
identity: {hostname: 111, password: $6$ereNXNuj9WVUt77B$.dbpuHaLernNl6qq6r14meIk1W5VAyaMV9.,
realname: 11, username: 11}
keyboard: {layout: us, toggle: null, variant: ''}
locale: en_US.UTF-8
network:
ethernets:
eno12399:
critical: true
dhcp-identifier: mac
dhcp4: true
nameservers:
addresses: [10.10.9.250]
eno12409: {dhcp4: true}
eno12419: {dhcp4: true}
eno12429: {dhcp4: true}
eno8303: {dhcp4: true}
eno8403: {dhcp4: true}
version: 2
proxy: http://mirrors.aliyun.com/ubuntu
ssh:
allow-pw: true
authorized-keys: []
install-server: true
storage:
grub:
reorder_uefi: False
config:
- {ptable: gpt, path: /dev/sda, wipe: superblock-recursive, preserve: false, name: '', grub_device: false,
type: disk, id: disk-sda}
- {device: disk-sda, size: 536870912, wipe: superblock, flag: boot, number: 1,
preserve: false, grub_device: true, type: partition, id: partition-2}
- {fstype: fat32, volume: partition-2, preserve: false, type: format, id: format-2}
- {device: disk-sda, size: -1, wipe: superblock, flag: '', number: 2,
preserve: false, grub_device: false, type: partition, id: partition-3}
- {fstype: xfs, volume: partition-3, preserve: false, type: format, id: format-3}
- {path: /, device: format-3, type: mount, id: mount-3}
- {path: /boot/efi, device: format-2, type: mount, id: mount-2}
updates: security
packages:
- linux-generic
- net-tools
late-commands:
- curtin in-target --target=/target -- /usr/bin/wget -P /root/ http://10.10.11.245/tftp/ubuntu_init.sh
- curtin in-target --target=/target -- /usr/bin/wget -P /root/ http://10.10.11.245/tftp/network.sh
- curtin in-target --target=/target -- /usr/bin/bash /root/ubuntu_init.sh
#- curtin in-target --target=/target -- sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && systemctl restart sshd
#- curtin in-target --target=/target -- systemctl stop ufw.service && systemctl disable ufw.service
#- curtin in-target --target=/target -- echo -e "NTP=ntp1.aliyun.com\nFallbackNTP=ntp.ubuntu.com" >> /etc/systemd/timesyncd.conf && systemctl restart systemd-timesyncd
version: 1
Ubuntu_init.sh
#!/bin/bash
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd
systemctl stop ufw.service
systemctl disable ufw.service
#
echo -e "NTP=ntp1.aliyun.com\nFallbackNTP=ntp.ubuntu.com" >> /etc/systemd/timesyncd.conf
systemctl restart systemd-timesyncd
#
cat >> /etc/security/limits.conf << EOF
* soft nofile 655350
* hard nofile 655350
* soft nproc 655350
* hard nproc 655350
root soft nofile 655350
root hard nofile 655350
root soft nproc 655350
root hard nproc 655350
EOF
########################################
cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat > /etc/sysctl.conf << EOF
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0
EOF
/sbin/sysctl -p
Mi problema
Cuando ejecuto la instalación automatizada de pxe en Dell R750 u otras máquinas de servidor de servicio UEFI abiertas. tftp, dhcpd, httpd están bien. pero cuando el servidor ejecuta "comandos tardíos" como wget
o curl
luego informa un error. Se pueden ejecutar otros comandos bash sin errores, como echo
, etc.sed
systemctl start service
cuando se produce un error de instalación automática, se informa un error y se interrumpe la instalación de este sistema. Yo uso, wget
puedo descargar el archivo bash desde mi servidor httpd y ejecutarlo.
foto para esto: foto de error
Si abre la imagen de error lentamente, aquí se describe el texto del error:
start: subiquity/Late/run/command_0: curtin in-target --target=/target -- /usr/bin/wget -P /root/ http://10.10.11.245/tftp/ubuntu_init.sh
start: subiquity/Meta/status_GET
finish: subiquity/Late/run/command_0: Command '['system-cat', '--level-prefix=false', '--identifier=subiquity_log.3140', 'sh', 'c', 'curtin in-target --target=/target --/usr/bin/wget -P /root/ http://10.10.11.245/tftp/ubuntu_init.sh']' returned non-zero exit status 8.ip a
registro httpd
10.10.11.94 - - [13/Dec/2021:15:58:40 +0800] "GET /tftp/ubuntu-20.04.3-live-server-amd64.iso HTTP/1.1" 200 1261371392 "-" "Wget"
10.10.11.94 - - [13/Dec/2021:15:59:01 +0800] "GET /tftp/ubuntu-20.04.3-live-server-amd64.iso HTTP/1.1" 200 1261371392 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:13 +0800] "GET /tftp/ubuntu-20.04.3-live-server-amd64.iso HTTP/1.1" 200 1261371392 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:25 +0800] "GET /tftp/meta-data HTTP/1.1" 200 31 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:25 +0800] "GET /tftp/user-data HTTP/1.1" 200 2772 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:25 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:26 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:27 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:28 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:29 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:30 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:31 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:32 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:33 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:34 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/Dec/2021:15:59:35 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
Lo ejecuto manualmente sin error.
Si alguien sabe cómo solucionar este problema o tiene lo mismo que el mío, envíeme un mensaje, gracias.
Si no lo expresé claramente, puedes señalarlo.
Respuesta1
Es probable que su problema se deba a la proxy
configuración.
proxy: http://mirrors.aliyun.com/ubuntu
Descubrí que si especifica un proxy, todo el tráfico web utilizará ese proxy. El wget
intento de descargar su secuencia de comandos se envía a través del proxy y falla.
Una de las formas en que proxy
se utiliza es que las variables de entorno http_proxy
se https_proxy
establecerán en su proxy
valor en el entorno del instalador. Al realizar solicitudes web, wget
utiliza estas variables de entorno para determinar el proxy. Aquí hay algunas líneas de comando simples que puede probar en el shell del entorno del instalador (o realmente en cualquier sistema Linux) para verificar.
Esto debería funcionar ya que no hay ningún proxy configurado.
http_proxy= wget http://10.10.11.245/tftp/ubuntu_init.sh
Esto debería producir un error y salir con el código de retorno 8
como muestran sus registros.
http_proxy=http://mirrors.aliyun.com/ubuntu wget http://10.10.11.245/tftp/ubuntu_init.sh
echo $?
Opciones
Estas son algunas formas disponibles de solucionar este problema.
- No configures un
proxy
. early_commands
no parece verse afectado porproxy
, por lo que esto funciona para descargar el script.
early-commands:
- /usr/bin/wget -P /run/ http://10.10.11.245/tftp/ubuntu_init.sh
- desarmar la variable de entorno relevante en
late-commands
. Esto debería hacerse para cada comando.
late-commands:
- http_proxy= curtin in-target --target /target -- /usr/bin/wget -P /root/ http://10.10.11.245/tftp/ubuntu_init.sh
Notas
Probé usando el 20.04.3
instalador de Ubuntu ( subiquity 21.08.2
)