【Linux On Web】- 模板虚拟机的制作与桌面池创建

天锦 发表于 女票们的新建与保养 分类,标签: Linux On Web

装系统

下载Ubuntu 18.04 LTS安装光盘,新建虚拟机,与普通的安装系统无差别,安装完后重启

安装VMwareTools

[user@ubuntu ~]# sudo apt update -y
[user@ubuntu ~]# sudo apt upgrade -y #先升级系统
[user@ubuntu ~]# sudo apt installopen-vm-tools -y
[user@ubuntu ~]# sudo reboot    #重启系统

部署SSSD

接下来为 Linux 桌面设置 Active Directory 集成和用户身份验证功能,VMware推荐使用SSSD服务做集成身份认证,网上找到了一些需要手动编写sssd.conf的例子,本人脸黑,均未成功实现,最后在Ubuntu官网找到了SSSD服务的文档才实现。

## 安装SSSD及相关依赖
[user@ubuntu ~]# sudo apt install sssd-ad sssd-tools realmd adcli sssd libnss-sss libpam-sss samba-common-bin -y
[user@ubuntu ~]# sudo realm join ad1.example.com    #加入域
Password for Administrator: 
[user@ubuntu ~]# vim /etc/sssd/sssd.conf    #配置SSSD
[sssd]
domains = ad1.example.com
config_file_version = 2
services = nss, pam

[domain/ad1.example.com]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = AD1.EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli 
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = ad1.example.com
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad

这里我改了一下use_fully_qualified_names,该值为True则用户必须以user@domain为用户名登录系统,设为False则可以省去@domain,但是AD域控中只能有一个域,不能有其他的域才可以设置成False。否则会出现关系混乱。

[user@ubuntu ~]# sudo pam-auth-update --enable mkhomedir    #设置登录后自动创建用户目录

验证

[user@ubuntu ~]# groups john@ad1.example.com    #使用groups查看组信息是否正确
john@ad1.example.com : domain users@ad1.example.com engineering@ad1.example.com

加域测试,建议测试前先打个快照,因为加入成功后会在模板机中留下用户信息,不好删除。

[user@ubuntu ~]# sudo login
ad-client login: john@ad1.example.com
Password: 
Welcome to Ubuntu 18.04 LTS (GNU/Linux 5.4.0-24-generic x86_64)
...
Creating directory '/home/john@ad1.example.com'.
john@ad1.example.com@ad-client:~$

不管是否成功,恢复快照,该解决问题解决问题,该下一步就往下走。

SUDO

我需要让组内的所有的用户有sudo的权限,所以需要配置sudoers文件

[user@ubuntu ~]# sudo -i
[root@ubuntu ~]$ cd /etc
[root@ubuntu /etc]$ chmod +w sudoers
[root@ubuntu /etc]$ echo "%students ALL=(ALL) ALL" > /etc/sudoers    #添加students用户组,该用户组在AD域中。
[root@ubuntu /etc]$ echo "%students@domain.com ALL=(ALL) ALL" > /etc/sudoers    #带域名格式的用户组,防止use_fully_qualified_names=true时students组失效
[root@ubuntu /etc]$ chmod -w sudoers

RunOnceScript

在安装模板系统时会设置一个user账户,有sudo权限,我们上面都是使用这个账户来配置Ubuntu系统的,但是在实际部署中,我并不想让这个本地用户出现在克隆好的云桌面系统中。VMware在Horizon中提供了一个RunOnceScript脚本配置选项,用来指定在克隆完成后运行一个脚本来实现一些特定功能。

这个参数在/etc/vmware/viewagent-custom.conf中。

先写一个once.sh脚本,用以存放执行一次的命令:

#!/bin/bash
deluser user
rm -rf /home/user/
echo "nameserver    10.10.1.1"> /etc/resolv.conf    #指定我们本地的DNS做解析

给once.sh添加可执行属性:

[user@ubuntu ~]# sudo chmod +x /etc/vmware/once.sh

编辑/etc/vmware/viewagent-custom.conf并设置RunOnceScript:

RunOnceScript=/etc/vmware/once.sh

软件

到此,基本上配置的差不多了,可以安装一些软件用来体验Linux系统了,我给模板安装了这些软件

Chrome--Google开发的浏览器,360浏览器,QQ浏览器,2345浏览器等众多国产浏览器它爸爸。
腾讯QQ--腾讯官方Linux版QQ,简单的功能、复古的界面带你来一场跨度十年的考古。
网易云音乐--国产良心,界面精良。
Steam--谁说Linux不能玩游戏!
Stellarium--一款虚拟天文馆,想看星星没问题!
WPS--悄悄告诉你:WPS是Microsoft Office它爸爸!
MindMaster--一款国内开发的思维导图软件
GIMP--Linux下的PhotoShoop
搜狗拼音输入法--中文必备,不二之选。
Free Download Manager--少看片,多学习!
---三大文本编辑器,别争了,都安装了---
Sublime Text
Visual Studio Code
Vim--骨灰级Linuxer最爱,提示小白,退出vim是冒号加q回车。
---------
Git--它的爸爸是Linus,就写了Linux操作系统的那个。跟Linux是亲兄弟。

部署完成之后关闭虚拟机,将虚拟机克隆成快照,就可以用来部署桌面池了。

注意是克隆成模板,不要转换成模板,当你修改桌面池要删除桌面池时,Horizon不仅会删除创建的虚拟机,还会连同模板一起删除。

创建桌面池

其他没啥的,按照VMware官网的指导下一步就可以了,这里说一下桌面池类型的问题。Linux桌面支持三种类型,手动桌面池,自动即时克隆浮动桌面池、自动完整克隆桌面池。老实选自动完整克隆桌面池,其他类型不支持,别折腾了。

在远程显示协议中注意勾选HTML Assess。

客户机自定义出勾选使用自定义规范。自定义规范在vCenter中创建。

桌面池创建完成后不要忘了授权用户(组)。

-------------------------------后续更新-------------------------------

DNS

前面在RunOnceScript中设置了nameserver为本地DNS,但是运行一段时间后发现通信出现错误,桌面池所有虚拟机均无法正常解析AD域控和Horizon服务器,查看了/etc/resolv.conf,发现之前的设置消失了,变回了127.0.0.1。

经查是Ubuntu17.0之后特有,systemd-resolvd服务会一直覆盖resolv.conf

解决方案A

将特定主机IP写入hosts文件,跳过DNS解析。

修改/etc/vmware/once.sh

#!/bin/bash
deluser user
rm -rf /home/user/
echo "10.10.1.1    domain.com"> /etc/hosts 
echo "10.10.1.1    ad.domain.com"> /etc/hosts 
echo "10.10.1.2        vd.domain.com"> /etc/hosts

方案B

停用systemd-resolved换unbound作为DNS解析服务
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo apt install unbound
sudo rm -rf /etc/resolv.conf
sudo vim  /etc/NetworkManager/NetworkManager.conf

在[main]
下面添加
dns=unbound
将dns服务替换为unbound
我选了方案A,修改较为简单。

下一篇:《【Linux On Web】- 创建Linux桌面池》

参考链接:

Service - SSSD

0 篇评论

发表我的评论