UNPKG

@porosys/pss

Version:

Porosys Server Setup (pss): General-purpose server setup and automation tool (including Netdata management)

154 lines (147 loc) â€ĸ 5.72 kB
import { execa } from 'execa'; import { input } from '@inquirer/prompts'; import { configChangeAlertDeps } from '../alerts/helpers/setup-config-change-alert/setup-config-change-alert.constant'; import { loadConfig } from '../config/config.helper'; import { netdataInstallDependencies } from './install/netdata-install.constant'; import { isDependencyCustom } from '../../types'; const uninstallScript = ` #!/bin/bash sudo killall netdata sudo wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --uninstall --non-interactive sudo systemctl stop netdata sudo systemctl disable netdata sudo systemctl unmask netdata sudo rm -rf /lib/systemd/system/netdata.service sudo rm -rf /lib/systemd/system/netdata-updater.service sudo rm -rf /lib/systemd/system/netdata-updater.timer sudo rm -rf /etc/logrotate.d/netdata sudo /usr/libexec/netdata/netdata-uninstaller.sh --yes --env /etc/netdata/.environment sudo apt-get --purge remove netdata -y sudo rm /usr/lib/netdata* -R sudo rm /var/lib/apt/lists/packagecloud.io_netdata_* -R sudo rm /etc/init.d/netdata sudo rm /etc/rc0.d/K01netdata sudo rm /etc/rc1.d/K01netdata sudo rm /etc/rc2.d/K01netdata sudo rm /etc/rc3.d/K01netdata sudo rm /etc/rc4.d/K01netdata sudo rm /etc/rc5.d/K01netdata sudo rm /etc/rc6.d/K01netdata sudo rm /etc/rc0.d/S01netdata sudo rm /etc/rc1.d/S01netdata sudo rm /etc/rc2.d/S01netdata sudo rm /etc/rc3.d/S01netdata sudo rm /etc/rc4.d/S01netdata sudo rm /etc/rc5.d/S01netdata sudo rm /etc/rc6.d/S01netdata sudo rm /usr/sbin/netdata sudo rm -rf /var/lib/dpkg/info/netdata* -R sudo rm -rf /var/lib/apt/lists/packagecloud.io_netdata* -R sudo rm -rf /usr/share/netdata -R sudo rm -rf /usr/share/doc/netdata* -R sudo rm /usr/share/lintian/overrides/netdata* sudo rm /usr/share/man/man1/netdata.1.gz sudo rm /var/lib/systemd/deb-systemd-helper-enabled/netdata.service.dsh-also sudo rm /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/netdata.service sudo rm /var/lib/systemd/deb-systemd-helper-masked/netdata.service sudo rm -rf /usr/lib/netdata -R sudo rm -rf /etc/rc2.d/S01netdata -R sudo rm -rf /etc/rc3.d/S01netdata -R sudo rm -rf /etc/rc4.d/S01netdata -R sudo rm -rf /etc/rc5.d/S01netdata -R sudo rm -rf /etc/default/netdata -R sudo rm -rf /etc/apt/sources.list.d/netdata.list sudo rm -rf /etc/apt/sources.list.d/netdata-edge.list sudo rm -rf /etc/apt/trusted.gpg.d/netdata-archive-keyring.gpg sudo rm -rf /etc/apt/trusted.gpg.d/netdata-edge-archive-keyring.gpg sudo rm -rf /etc/apt/trusted.gpg.d/netdata-repoconfig-archive-keyring.gpg sudo rm -rf /SM_DATA/sm_virt_machines/media/netdata-uninstaller.sh sudo rm -rf /SM_DATA/sm_virt_machines/media/netdata* sudo rm -rf /SM_DATA/working/netdata-kickstart* sudo rm -rf /usr/share/lintian/overrides/netdata sudo rm -rf /var/cache/apt/archives/netdata* sudo rm -rf /opt/netdata* sudo rm -rf /etc/cron.daily/netdata-updater sudo rm -rf /usr/libexec/netdata -R sudo rm -rf /var/log/netdata -R sudo rm -rf /var/cache/netdata -R sudo rm -rf /var/lib/netdata -R sudo rm -rf /etc/netdata -R sudo rm -rf /opt/netdata -R systemctl daemon-reload `; export const netdataUninstallCommand = async () => { console.log('🧹 Running Netdata uninstall script...'); try { await execa(`bash -c '${uninstallScript.replace(/'/g, "'\\''")}'`, { shell: true, stdio: 'inherit', }); console.log('✅ Netdata uninstall script completed.'); } catch (err) { console.error('❌ Failed to run Netdata uninstall script:', err); } // remove cron jobs that are related to health scripts try { const config = await loadConfig(); if (config?.healthScriptsPath) { const { stdout: currentCrontab } = await execa('crontab', ['-l']); const filteredCrontab = currentCrontab .split('\n') .filter((line) => !line.includes(config.healthScriptsPath!)) .join('\n') + '\n'; // Ensure trailing newline await execa('crontab', ['-'], { input: filteredCrontab }); console.log( `✅ Removed cron jobs containing: ${config.healthScriptsPath}`, ); } } catch (err) { if ( typeof err === 'object' && err && 'stderr' in err && typeof (err as any).stderr === 'string' && (err as any).stderr.includes('no crontab for') ) { console.log('â„šī¸ No crontab set for current user.'); } else { console.error('❌ Failed to update crontab:', err); } } // uninstall config change alert dependencies const dependenciesToUninstall = [ ...configChangeAlertDeps, ...netdataInstallDependencies, ]; for (const dep of dependenciesToUninstall) { if (isDependencyCustom(dep)) { const shouldUninstallInput = await input({ message: `Do you want to uninstall ${dep.binary} (custom uninstall)? (y/N): `, }); const shouldUninstall = /^y(es)?$/i.test(shouldUninstallInput.trim()); if (shouldUninstall) { await dep.uninstall(); } else { console.log(`â„šī¸ Skipped uninstalling ${dep.binary}`); } } else { const answer = await input({ message: `Do you want to uninstall ${dep.binary} (apt package: ${dep.packageName})? (y/N): `, }); if (/^y(es)?$/i.test(answer.trim())) { try { await execa(`sudo apt-get --purge remove -y ${dep.packageName}`, { shell: true, stdio: 'inherit', }); console.log(`✅ Uninstalled ${dep.packageName}`); } catch (err) { console.error(`❌ Failed to uninstall ${dep.packageName}:`, err); } } else { console.log(`â„šī¸ Skipped uninstalling ${dep.packageName}`); } } } };