使用本地提供商后,如何“清理”机器?

使用本地提供商后,如何“清理”机器?

我正在进行一些测试,有时我会遇到容器和 juju 方面的问题。如何清理机器,以便我可以“从头开始”使用本地提供商,而无需重新安装?

答案1

LXC 容器和 Juju 环境需要在重启后继续保留,因此所有内容并不包含在一个地方。

首先,确保环境已被销毁,并且容器未运行。然后删除以下文件和目录:

/etc/init/juju-* 
/etc/lxc/auto/juju-*
/etc/rsyslog.d/25-juju* 
/var/lib/juju/containers/* 
/var/lib/lxc/juju-* 
~/.juju/<env> 
~/.juju/environments/<env>.jenv

然后您可以在干净的环境下重新启动。

在某些情况下,您可能需要手动列出、停止和销毁容器,请在删除 Juju 文件之前执行此操作。

答案2

您可能会发现我使用的以下代码片段很有帮助:

http://blog.naydenov.net/2014/03/remove-juju-local-environment-cleanly/

它是一个需要以 root 身份运行的 bash 脚本,它会尝试积极清理本地 juju 环境的所有残余,包括 LXC 模板、容器、日志、正在运行的 mongodb 测试服务器等。

答案3

嗯,您可以使用sudo /sbin/remove-juju-services命令,如果机器在某个时候是手动配置的,该命令应该存在,如果不存在,它的作用是:

for path_to_unit in $(ls /etc/systemd/system/juju*); do
  echo "removing juju service: $path_to_unit"
  unit=$(basename "$path_to_unit")
  systemctl stop "$unit"
  systemctl disable "$unit"
  systemctl daemon-reload
  rm -f "$path_to_unit"
done

echo "removing /var/lib/juju/tools/*"
rm -rf /var/lib/juju/tools/*

echo "removing /var/lib/juju/db/*"
rm -rf /var/lib/juju/db/*

echo "removing /var/lib/juju/raft/*"
rm -rf /var/lib/juju/raft/*

echo "removing /var/run/juju/*"
rm -rf /var/run/juju/*

has_juju_db_snap=$(snap info juju-db | grep installed:)
if [ ! -z "$has_juju_db_snap" ]; then
  echo "removing juju-db snap and any persisted database data"
  snap remove --purge juju-db
fi

相关内容