Рейтинг:0

Автоматизированный сервер устанавливает ключи верхнего уровня файла конфигурации «поздние команды» не может использовать wget или curl

флаг ps

Я столкнулся с проблемой автоматической установки сервера.

Это моя среда: Сервер: centos 7.6 x86_64 (система kvm) Node1: нет системы Node2: нет системы

Я хочу автоматизировать установку серверной системы Ubuntu-20.04.3.

О Server1 я устанавливаю tftpd, dhcpd, httpd. какой-то такой конфиг:

# тфтпд
# кот /etc/xinetd.d/tftp
служба tftp
{
    тип_сокета = дграмма
    протокол = UDP
    подождите = да
    пользователь = корень
    сервер = /usr/sbin/in.tftpd
    server_args = -s /var/lib/tftpboot
    отключить = да
    per_source = 11
    спс = 100 2
    флаги = IPv4
}


# dhcpd
# кот /etc/dhcp/dhcpd.conf
стиль ddns-обновления нет;
подсеть 10.10.8.0 сетевая маска 255.255.252.0 {
     опциональные маршрутизаторы 10.10.11.254;
     вариант доменных имен-серверов 10.10.9.250;
     опция маска подсети 255.255.252.0;
     диапазон динамической загрузки 10.10.11.10 10.10.11.220;
     время аренды по умолчанию 21600;
     максимальное время аренды 43200;
     следующий сервер 10.10.11.245;
     имя файла "pxelinux.0";
}

# httpd
# кот /etc/httpd/conf.d/tftp.conf
<Каталог /var/lib/tftpboot>
        Опции +FollowSymLinks +Индексы
        Требовать все предоставленные
</Каталог>
Псевдоним /tftp /var/lib/tftpboot

Файлы в /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 метаданные
-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 пользовательские данные
-rwxrwxrwx 1 root root 11772160 11æ 25 17:40 vmlinuz

grub.cfg

# кошка жратва/grub.cfg
по умолчанию = автоматическая установка
таймаут=5
timeout_style = меню

установить menu_color_normal=белый/черный
установить menu_color_highlight=черный/светло-серый

пункт меню "Focal Live Installer - автоматизированный" --id=autoinstall {
    echo "Загрузка ядра... 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 автоустановка ds=nocloud-net\;s=http://10.10.11.245/tftp/ ---
    echo "Загрузка RAM-диска... 111"
    initrd / initrd
}
пункт меню "Focal Live Installer" --id=install {
    echo "Загрузка ядра... 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 "Загрузка RAM-диска... 22"
    initrd / initrd
}

метаданные

# метаданные кота
идентификатор экземпляра: фокальная автоустановка

данные пользователя

# пользовательские данные кота
#cloud-config
автоустановка:
  подходящий:
    IP-адрес: правда
    save_sources_list: ложь
    начальный:
    - арки: [amd64, i386]
      ури: http://mirrors.aliyun.com/ubuntu
    - арки: [по умолчанию]
      URI: http://ports.ubuntu.com/ubuntu-ports
  данные пользователя:
    часовой пояс: Азия/Шанхай
    отключить_корень: ложь
    пароль:
      список: |
        корень:$6$YMYlEcE71$/bcl2qd2rSYePvOkmgAyQR/ч/
  идентификатор: {имя хоста: 111, пароль: $6$ereNXNuj9WVUt77B$.dbpuHaLernNl6qq6r14meIk1W5VAyaMV9.,
    настоящее имя: 11, имя пользователя: 11}
  клавиатура: {раскладка: США, переключатель: ноль, вариант: ''}
  локаль: en_US.UTF-8
  сеть:
    Ethernet:
      ено12399:
        критический: правда
        DHCP-идентификатор: Mac
        DHCP4: правда
        серверы имен:
          адреса: [10.10.9.250]
      eno12409: {dhcp4: правда}
      eno12419: {dhcp4: правда}
      eno12429: {dhcp4: правда}
      eno8303: {dhcp4: правда}
      eno8403: {dhcp4: правда}
    версия: 2
  прокси: http://mirrors.aliyun.com/ubuntu
  СШ:
    разрешить-pw: правда
    авторизованные ключи: []
    сервер установки: правда
  место хранения:
    жратва:
      reorder_uefi: Ложь
    конфигурация:
    - {ptable: gpt, путь: /dev/sda, wipe: superblock-recursive, save: false, name: '', grub_device: false,
      тип: диск, идентификатор: disk-sda}
    - {устройство: disk-sda, размер: 536870912, wipe: superblock, флаг: boot, число: 1,
      сохранить: false, grub_device: true, тип: раздел, идентификатор: раздел-2}
    - {fstype: fat32, том: раздел-2, сохранить: false, тип: формат, идентификатор: формат-2}
    - {устройство: disk-sda, size: -1, wipe: superblock, flag: '', number: 2,
      сохранить: false, grub_device: false, тип: раздел, идентификатор: раздел-3}
    - {fstype: xfs, том: раздел-3, сохранить: ложь, тип: формат, идентификатор: формат-3}
    - {путь: /, устройство: формат-3, тип: mount, id: mount-3}
    - {путь: /boot/efi, устройство: формат-2, тип: mount, идентификатор: mount-2}
  обновления: безопасность
  пакеты:
  - общий для Linux
  - сетевые инструменты
  поздние команды:
  - 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 запрещающий пароль/PermitRootLogin yes/' /etc/ssh/sshd_config && systemctl restart sshd
  #- curtin in-target --target=/target -- systemctl остановить ufw.service && systemctl отключить 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
  версия: 1

Ubuntu_init.sh

#!/бин/баш
sed -i 's/#PermitRootLogin запрещающий пароль/PermitRootLogin yes/' /etc/ssh/sshd_config

systemctl перезапустить sshd

systemctl остановить ufw.service
systemctl отключить ufw.service
# 
echo -e "NTP=ntp1.aliyun.com\nFallbackNTP=ntp.ubuntu.com" >> /etc/systemd/timesyncd.conf
systemctl перезапустить systemd-timesyncd
# 
кошка >> /etc/security/limits.conf << EOF
* мягкий nofile 655350
* жесткий nofile 655350
* софт нпрок 655350
* жесткий нпрок 655350
корневой мягкий nofile 655350
корневой жесткий nofile 655350
корень мягкий нпрок 655350
жесткий корень nproc 655350
EOF
#########################################
СР /etc/sysctl.conf /etc/sysctl.conf.bak
кошка > /etc/sysctl.conf << EOF
vm.swappiness = 0
ядро.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

Моя проблема

Когда я запускаю автоматическую установку pxe на Dell R750 или других машинах с открытым сервисным сервером UEFI. tftp,dhcpd,httpd в порядке. но когда сервер выполняет "поздние команды", например wget или же завиток то сообщите об ошибке. другие команды bash могут выполняться без ошибок, например эхо ,сед,запуск службы systemctl и так далее.

когда ошибка автоматической установки, то сообщите об ошибке и нарушении этой установки системы. я использую wget может загрузить файл bash с моего httpd-сервера и выполнить его.

картинка для этого: ошибка фото

Если вы медленно открываете изображение ошибки, вот описание ошибки:

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
начало: subiquity/Meta/status_GET
Finish: subiquity/Late/run/command_0: Command '['system-cat', '--level-prefix=false', '--identifier=subiquity_log.3140', 'sh', 'c', 'занавес в -target --target=/target --/usr/bin/wget -P /root/ http://10.10.11.245/tftp/ubuntu_init.sh']' возвратил ненулевой статус выхода 8.ip a 

httpd журнал

10.10.11.94 - - [13/дек/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/дек/2021:15:59:01 +0800] "GET /tftp/ubuntu-20.04.3-live-server-amd64.iso HTTP/1.1" 200 1261371392 "-" "Облако- Инициализация/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/дек/2021:15:59:13 +0800] "GET /tftp/ubuntu-20.04.3-live-server-amd64.iso HTTP/1.1" 200 1261371392 "-" "Облако- Инициализация/21.2-3-g899bfaa9-0ubuntu2~20.04.1"
10.10.11.94 - - [13/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/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/дек/2021:15:59:35 +0800] "GET /tftp/vendor-data HTTP/1.1" 404 214 "-" "Cloud-Init/21.2-3-g899bfaa9-0ubuntu2~ 20.04.1"

Я выполняю его вручную без ошибок.


Если кто-нибудь знает, как решить эту проблему или у меня такая же проблема, пожалуйста, пришлите мне сообщение, спасибо.

если я не ясно выразился, вы можете указать.

muru avatar
флаг us
Пожалуйста, не размещайте изображения текста. Скопируйте текст сюда и используйте форматирование кода. Похоже, там написано «статус выхода 8», что для [`wget`](https://manpages.ubuntu.com/manpages/jammy/en/man1/wget.1.html) означает «8 Сервер выдал ошибку отклик."
bowfgc avatar
флаг ps
Спасибо, я обновляю описание текста. если сервер httpd не отвечает, почему я могу использовать `wget` для загрузки вручную без ошибок. @muru
muru avatar
флаг us
Спасибо. У вас есть доступ к журналам сервера, чтобы узнать, что может происходить? Какую ошибку вы получаете при использовании curl?
bowfgc avatar
флаг ps
да, я проверяю свой журнал httpd, ничего, просто записываю некоторые запросы, GET `ubuntu-20.04.3.iso`, `meta-data`,`user-data`, я публикую запись журнала в статье.
Рейтинг:0
флаг jp

Ваша проблема, скорее всего, вызвана прокси конфигурация

  прокси: http://mirrors.aliyun.com/ubuntu

Я обнаружил, что если вы укажете прокси, то весь веб-трафик будет использовать этот прокси. wget попытка загрузить ваш скрипт отправляется через прокси и не удалась.

Один из способов, прокси используется в том, что переменные окружения http_proxy и https_proxy будет настроен на ваш прокси значение в среде установщика. При выполнении веб-запросов wget использует эти переменные среды для определения прокси. Вот несколько простых команд, которые вы можете проверить в оболочке среды установки (или в любой системе Linux).

Это должно работать, так как прокси не установлен.

http_proxy=wget http://10.10.11.245/tftp/ubuntu_init.sh

Это должно привести к ошибке и завершиться с кодом возврата 8 как показывают ваши журналы.

http_proxy=http://mirrors.aliyun.com/ubuntu wget http://10.10.11.245/tftp/ubuntu_init.sh
эхо $?

Параметры

Вот несколько доступных способов обойти это

  • не настраивать прокси.
  • Early_commands по-видимому, не затронуты прокси, так что это работает, чтобы загрузить скрипт.
  ранние команды:
    - /usr/bin/wget -P /run/ http://10.10.11.245/tftp/ubuntu_init.sh
  • отключить соответствующую переменную среды в поздние команды. Это должно быть сделано для каждой команды.
  поздние команды:
    - http_proxy= curtin in-target --target /target -- /usr/bin/wget -P /root/ http://10.10.11.245/tftp/ubuntu_init.sh

Примечания

Я тестировал с помощью Ubuntu 20.04.3 установщик (21.08.2)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.