前情提要
啥是Landscape
我也是今天才开始接触和玩,看起来就是一个类似Cockpit的运维工具。
与Cockpit不同的是,官方介绍说 除了免费额度,如果自托管的Landscape上的机器超过10台时,则需要Ubuntu Pro订阅服务 所以还能额外多管5台Pro的机器,即最多能管15台。
官方介绍
像管理一台机器那样轻松地管理数千台Ubuntu机器
Landscape是支持和管理大型且不断增长的桌面、服务器和云主机的最具成本效益的方式。其减少了您的团队在日常Linux服务器管理和桌面管理方面的工作量。
检查最低要求
以下内容摘自官方文档机翻,实际刚安装完并没有消耗这么多资源,但仍不建议在小鸡上做主控
- 操作系统:Ubuntu 20.04 LTS (Focal Fossa) 或 Ubuntu 22.04 LTS (Jammy Jellyfish)
- 硬件:双核 2 GHz 处理器、4 GB RAM 和 20 GB 磁盘空间
- 网络:IP 地址和 FQDN,以及允许 SSH(通常为端口 22)、HTTP(端口 80)和 HTTPS(端口 443)的 TCP 通信
- 如果您希望使用 LetsEncrypt 来获取 SSL 证书、用于访问 Landscape 的主机名的 DNS 管理访问权限
安装服务端(主控)
# tips: 如果使用fish终端,由于语法差异,以下操作应该切换到Bash终端
# 安装依赖
sudo apt update && sudo apt install -y ca-certificates software-properties-common
## 设置环境变量(Bash终端)
HOST_NAME="oci-xx" # The host name you’re using for the Landscape installation
DOMAIN="xxxxxxx.com" # The host name you’re using for the Landscape installation
FQDN=$HOST_NAME.$DOMAIN
# 设置主机名(跳过此步骤,我不愿意改)
# sudo hostnamectl set-hostname "$FQDN"
# 添加 Landscape PPA
sudo add-apt-repository -y ppa:landscape/self-hosted-23.03
# 如果安装过cockpit(即便已经卸载),安装过程中也会报错,处理方法是打开/var/lib/dpkg/statoverride,删除cockpit-wsinstance的行
# 安装 Landscape
## 此步骤会安装一大堆依赖,如apache2、postgres、rabbitmq和python库等
sudo apt update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y landscape-server-quickstart
修复端口冲突
# TIPS: 因为需要安装apache2,会与nginx冲突80/443端口导致无法启动
# TIPS: 由于不想更改主机名,不得不手动修正一些错误的配置
# TIPS: 以下实操是以80->10080和443->10443为例
# 先自动替换一波
sudo sed -i 's/oci-xx:443/xx.xxxxxxx.com:10443/g' /etc/apache2/sites-available/oci-xx.conf # 文件名与HOST_NAME同名
# 再逐一检查和替换配置中的80/443端口,由于安装时是手动修改的,所以没有笔记
vim /etc/apache2/ports.conf
vim /etc/apache2/sites-available/default-ssl.conf
vim /etc/apache2/sites-available/oci-xx.conf
配置 SSL
# 已经提前使用amce.sh生成了nginx用的证书,此处直接复用
vim /etc/apache2/sites-available/oci-xx.conf
# 修改证书路径
# SSLCertificateFile /etc/ssl/certs/landscape_server.pem
# SSLCertificateKeyFile /etc/ssl/private/landscape_server.key
SSLCertificateFile /root/.acme.sh/*.xxxxxxx.com_ecc/fullchain.cer
SSLCertificateKeyFile /root/.acme.sh/*.xxxxxxx.com_ecc/*.xxxxxxx.com.key
# 往下几行,找到并修改
# SSLCertificateChainFile /etc/ssl/certs/landscape_server_ca.crt
SSLCertificateChainFile /root/.acme.sh/*.xxxxxxx.com_ecc/fullchain.cer
# 重启apache服务生效
systemctl restart apache2
创建管理账号
- 访问 https://xx.xxxxxxx.com:10443/
- 创建账号并登录
- 登录后进入Settings,将Ping URL设置为
http://xx.xxxxxxx.com:10080/ping
(我也不懂为啥,ping不能用https,只能是http)
安装客户端(被控端/Agent)
# 添加 Landscape PPA(否则安装的版本比较旧,19.x->23.x的差距)
sudo add-apt-repository -y ppa:landscape/self-hosted-23.03
# 安装客户端
sudo apt update && sudo apt install -y landscape-client
# 配置客户端
sudo landscape-config --computer-title $(hostname) --account-name standalone --url https://xxx.xxxxxxx.com:10443/message-system --ping-url http://xx.xxxxxxx.com:10080/ping
# 如果安装过cockpit(即便已经卸载),安装过程中也会报错,处理方法是打开/var/lib/dpkg/statoverride,删除cockpit-wsinstance的行
## Start Landscape client on boot? [Y/n]:选Y开机自启动,其他要Y的地方Y,其他回车或按自身需要配置
# 手动更改配置
vim /etc/landscape/client.conf
参考资料
https://ubuntu.com/landscape/docs/quickstart-deployment
使用 script 功能批量执行脚本
脚本可以保存,定期重复执行,例如将acme.sh生成的ssl证书批量发送到远程服务器
以下是demo,上传的文件保存路径是$LANDSCAPE_ATTACHMENTS