装系统
下载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桌面池》
参考链接: