我正在进行一些测试,有时我会遇到容器和 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