Автор Тема: Кастомизация ВМ через vmware-tools  (Прочитано 822 раз)

Оффлайн keris234

  • Начинающий
  • *
  • Сообщений: 9
Здравствуйте. Цель - развернуть ВМ с AltLinux SP8 средствами Terraform в vSphere.

ВМ разворачивается из заранее созданного шаблона, далее идет кастомизация ВМ средствами vmware-tools.
В частности, идет попытка настроить сеть. Скрипт на основе наличия файла /etc/sysconfig/network определяет(ошибочно!) систему сетевой инициализации дистрибутива как Redhat-подобную, прописывает туда GATEWAY, далее пытается внести остальные сетевые настройки в /etc/sysconfig/network-scripts/ifcfg-ens160. Естественно, ничего не получается и на этом кастомизация средствами vmware-tools и весь деплой ВМ падает с ошибкой.

О наличии в природе etcnet wmware-tools ничего не знает. Вижу соотв тикет А. Шабалина от 2020г https://github.com/vmware/open-vm-tools/issues/433 по добавлению поддержки etcnet в wmware-tools,но по нему не видно какого-либо движения.

Вопрос - существует ли какой-либо способ решить указанную проблему(патчи к wmware/open-vm-tools, возможность заменить систему управления сетью etcnet на что-то стандартное, какие-то другие workaround-ы)?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 925
    • Домашняя страница
    • Email
Re: Кастомизация ВМ через vmware-tools
« Ответ #1 : 17.11.2021 13:25:57 »
Используйте NetworkManager или systemd-networkd.
Андрей Черепанов (cas@)

Оффлайн keris234

  • Начинающий
  • *
  • Сообщений: 9
Re: Кастомизация ВМ через vmware-tools
« Ответ #2 : 17.11.2021 14:28:19 »
Решил проблему следующими костылями. Вот инструкция -
1. Удалить, если установлен из репозиториев ОС, пакет open-vm-tools, так как он собран без необходимого плагина DeployPkg
2. Поставить vmware-tools, предлагаемый в UI vSphere
3. Создать директорию, куда vmware-tools запишут нужные параметры сети(mkdir /etc/sysconfig/network-scripts)
4. Создать исполняемый файл /etc/rc.d/rc.local следующего содержания
#!/usr/bin/env bash
IF_NAME="ens160"

IPprefix_by_netmask() {
  #function returns prefix for given netmask in arg1
  bits=0
  for octet in $(echo $1| sed 's/\./ /g'); do
    binbits=$(echo "obase=2; ibase=10; ${octet}"| bc | sed 's/0//g')
    let bits+=${#binbits}
  done
  echo "/${bits}"
}

while true; do
  if [[ -f /etc/sysconfig/network-scripts/ifcfg-"${IF_NAME}" ]]; then
    GATEWAY=$(cat /etc/sysconfig/network | grep GATEWAY= | awk -F'=' '{print $2}')
    IPADDR=$(cat /etc/sysconfig/network-scripts/ifcfg-"${IF_NAME}" | grep IPADDR= | awk -F'=' '{print $2}')
    NETMASK=$(cat /etc/sysconfig/network-scripts/ifcfg-"${IF_NAME}" | grep NETMASK= | awk -F'=' '{print $2}')
    NETMASK_PREFIX=$(IPprefix_by_netmask "${NETMASK}")

    echo "${IPADDR}${NETMASK_PREFIX}" > /etc/net/ifaces/"${IF_NAME}"/ipv4address
    echo "default via ${GATEWAY}" > /etc/net/ifaces/"${IF_NAME}"/ipv4route
    sed -i '/^GATEWAY=/d' /etc/sysconfig/network
    systemctl restart network.service
    rm -f /etc/rc.d/rc.local
    exit 0
  fi
  sleep 1
done

После первой загрузки ВМ из шаблона, созданный скрипт /etc/rc.d/rc.local будет
1. ждать появления файла /etc/sysconfig/network-scripts/ifcfg-ens160
2. как только vmware-tools его создадут, внесет соответствующие настройки в конфигурационные файлы etcnet

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 925
    • Домашняя страница
    • Email
Re: Кастомизация ВМ через vmware-tools
« Ответ #3 : 17.11.2021 19:23:40 »
Решил проблему следующими костылями. Вот инструкция -
1. Удалить, если установлен из репозиториев ОС, пакет open-vm-tools, так как он собран без необходимого плагина DeployPkg
2020-03-05 Алексей Шабали́н 11.0.5-alt2
- enable deploypkg support
- add test package

Альт 8 СП в последнем инспекционном контроле использует open-vm-tools-11.1.5-alt1. Обратитесь в отдел продаж за инструкцией по обновлению.
Андрей Черепанов (cas@)

Оффлайн keris234

  • Начинающий
  • *
  • Сообщений: 9
Re: Кастомизация ВМ через vmware-tools
« Ответ #4 : 18.11.2021 11:27:42 »
Альт 8 СП в последнем инспекционном контроле использует open-vm-tools-11.1.5-alt1. Обратитесь в отдел продаж за инструкцией по обновлению.
Спасибо, это уберет из инструкции п.1, но без доработки поддержки etcnet в openv-vm-tools никак не поможет с остальнвм. Мое решение проверено на работоспособность и в-принципе меня устраивает.

К слову сказать, нестандартные реализации базовых вещей в системе доставляют заметные неудобства людям, которые ее поддерживают. Вот другая проблема, с которой приходится постоянно бороться - пакетный менеджер в Альте apt, но не полностью по ключам и функционалу совместимый с апстримом. Из-за этого ansible отказывается с ним работать и приходится переписывать весь код автоматизации, ведя в дальнейшем отдельную ветку для АльтЛинукса.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 925
    • Домашняя страница
    • Email
Re: Кастомизация ВМ через vmware-tools
« Ответ #5 : 18.11.2021 16:11:22 »
Зачем apt в Ansible под Альтом? Там есть apt_rpm, apt_repo. Что в плейбуках пишите?
Андрей Черепанов (cas@)

Оффлайн keris234

  • Начинающий
  • *
  • Сообщений: 9
Re: Кастомизация ВМ через vmware-tools
« Ответ #6 : 18.11.2021 17:55:24 »
Зачем apt в Ansible под Альтом? Там есть apt_rpm, apt_repo. Что в плейбуках пишите?
Про модуль apt_rpm не знал, интересно. Пытались использовать модули или apt или package. После неудач перешли на command/shell примерно так
-name: Install redis rpm
 command: rpm -U "/tmp/{{ redis_package }}"
 notify: redis restart
В идеале было бы использование модуля package, который сам пытается определить тип пакетного менеджера в системе и далее его использует через соотв модуль. Это позволяе написать один универсальный таск под все ОС. А сейчас, если использовать package, то он будет считать, что в системе apt и пытаться использоать ansible-модуль apt(неуспешно).
Хотя, сейчас пересмотрел документацию на package https://docs.ansible.com/ansible/latest/collections/ansible/builtin/package_module.html
оказывается, можно в явном виде указать тип пакетного менеджера. Надо попробовать указать apt_rpm.
« Последнее редактирование: 18.11.2021 18:00:52 от keris234 »