vnode.ypserver
Ansible角色:ypserver
该角色安装和配置YP/NIS服务器,该服务器是OpenBSD和其他BSD*操作系统的一部分。 目前,该角色仅支持OpenBSD,未来计划添加对FreeBSD和NetBSD的支持。
在适用的情况下,该角色参考系统文档,例如yp(8)
手册。
需求
操作
使用此角色不需要外部角色和/或模块。
测试与开发
对于测试和开发,此角色依赖以下外部工具:
- Vagrant(支持VirtualBox或VMWare提供程序)
- VagrantCloud(特别是
generic/openbsd6
这个盒子)
角色变量
可用的变量如下所示,包括其默认值(请参阅defaults/main.yml
)。
所有这些 应 被实现。如果发现没有实现,请在GitHub仓库中提交问题。
必需的变量
使用该角色时,需要设置以下变量。
ypserver_domain: ""
必需,必须有一个有效的NIS域名。这是您打算配置的NIS域的名称。
ypserver_master: ""
必需,必须列出该域可以访问的NIS主服务器。
ypserver_servers: []
必需,必须列出该域的NIS服务器列表。此列表 必须 包括 ypserver_master
服务器。
注意:如果您只想设置从服务器(针对已存在的主服务器),请确保主服务器 不是 您应用此角色的主机组的一部分。
ypserver_serverinfo: {}
必需,但如果该域的NIS服务器可以在DNS或/etc/hosts
中找到,则可以为空。
如果不为空,该字典列出了该域服务器的IPv4和/或IPv6地址。然后,角色将填充/etc/hosts
所需的行。如果无法访问或解析服务器,NIS代码将挂起。有关更多详细信息,请参见yp(8)
。
下面的示例列出了双栈网络中master
和slave
服务器的地址。
ypserver_serverinfo:
master:
- "192.0.2.1"
- "2001:db8::111:1"
slave:
- "192.0.2.2"
- "2001:db8::111:2"
ypserver_ypservacl: {}
必需,如果设置了ypserver_set_ypserveracl
。该字典列出了ypserv.acl(5)
文件的规则。此ACL文件允许限制对YP/NIS服务器的访问到适当的网络范围。
如果未设置ypserver_set_ypserveracl
,则该变量将创建一个securenet(5)
文件,这是一种更有限的格式。请确保您的规则考虑到这些限制,并通过检查相关手册页来确认。
确保包含您的从服务器以及需要访问YP/NIS的客户端。例如,如果您希望允许本地主机、一个从服务器slave
和192.0.2.0/24
网络客户端,您可以使用:
ypserver_ypservacl:
- action: allow
type: host
host: "localhost"
- action: allow
type: host
host: "master"
- action: allow
type: host
host: "192.0.2.2"
tag: "slave"
- action: allow
type: net
host: "192.0.2.0"
mask: "255.255.255.0"
tag: "Clients"
- action: deny
type: all
可选变量
ypserver_usedns: true
指定YP/NIS映射可以使用DNS进行主机名查找。建议保持为true
。设置为false
时,请确保ypserver_serverinfo
和/或ypserver_set_hosts
设置正确,以便能够解析您的NIS服务器。
ypserver_unsecure: false
当仅为OpenBSD或FreeBSD客户端提供服务时,建议保持为false
。
如果设置为true
,passwd
映射将包含(加密的)密码条目。如果您所有的YP/NIS客户端都运行OpenBSD或FreeBSD,可以安全地将此变量设置为false
。有关更多信息,请参见OpenBSD FAQ。请注意,此设置对于解决NIS固有的不安全性帮助不大。
ypserver_nopush: false
除非您需要在从服务器上更新映射的特定措施,否则建议保持为true
。
如果设置为true
,主服务器上的更新映射将不会自动推送到从服务器。 在这种情况下,您需要以其他方式安排从服务器上的更新(例如,使用cron作业或rsync)。
ypserver_source_dir: '/etc'
NIS域的映射所服务的源目录。此目录需要在主服务器上存在,并包含在ypserver_source_maps
变量中提到的文件。
ypserver_source_maps:
passwd: 'master.passwd'
group: 'group'
该字典列出NIS域主服务器提供给客户端的映射及其源文件。这些文件必须存在于主服务器的ypserver_source_dir
目录中。有关其他支持的映射,请参见Makefile.yp(8)
。
ypserver_passwd_minuid: 1000
ypserver_passwd_maxuid: 32765
ypserver_group_mingid: 1000
ypserver_group_maxgid: 32765
这些变量表示包含在NIS映射中的用户名和组的下限/上限。这可以防止系统账户泄漏到映射中。
支持服务器上多个YP/NIS域的变量
该变量旨在允许在一个服务器上托管多个NIS域。这不是最初希望的用例,因此如果发现问题,请在GitHub上提交问题。
ypserver_set_domainname: true
建议将其保持为true
,作为您打算作为“主”(默认)域名的域。对于您希望在同一服务器上托管的其他NIS域,必须设置为false
。
其他设置
这些变量不是角色调用所必需的,默认值应该是可以的。
ypserver_set_hosts: false
如果设置为true
,角色会将NIS服务器的IP信息添加到/etc/hosts
文件中。这在域不使用DNS查找时通常是有用的(ypserver_usedns
设置为false
)。请注意,这确实需要ypserver_serverinfo
变量中每个NIS服务器的IP信息。
ypserver_set_yppasswdd: false
启用yppasswd
服务,允许主服务器上的用户在NIS映射中更改他们的密码。请注意,最近版本的OpenBSD(截至5.9)不再包含此功能。
ypserver_set_ypservacl: false
根据ypserv.acl(5)
文件创建ACL文件/var/yp/ypserv.acl
,而不是创建securenet(5)
文件。此ACL文件允许限制对YP/NIS服务器的访问到适当的网络范围。需要适当地设置ypserver_ypservacl
变量。
ypserver_set_cronjob: true
建议保持为true
,除非您需要/希望其他安排。设置定期的cron作业以更新域映射,并检查从服务器上缺失的映射。
作业名称 | 间隔 | 注释 |
---|---|---|
更新YP域ypserver_ypdomain |
每15分钟 | 在主服务器上 |
更新YP域ypserver_ypdomain |
每小时的:05 | 在从服务器上 |
内部变量
这些变量在角色内部使用,不打算供用户修改。请自行承担修改这些变量的风险。通常,它们对应于底层操作系统中的硬编码值。
ypserver_ypdbdir: '/var/yp'
ypserver_ypdbdir_domain: "{{ ypserver_ypdbdir }}/{{ ypserver_domain }}"
ypserver_securenet: "{{ ypserver_ypdbdir }}/securenet"
依赖项
无。
示例剧本
下面是一个示例,用于创建一个简单的YP/NIS域,包含两个服务器master
和slave
。该域称为legacy
。映射的源文件位于/etc/legacy
中。
---
- hosts: ypservers
roles:
- role: vnode.ypserver
vars:
ypserver_ypdomain: legacy
ypserver_master: master
ypserver_servers: "{{ groups['ypservers'] }}"
ypserver_source_dir: "/etc/{{ ypserver_domain }}"
许可证
MIT
作者信息
该角色由Rogier Krieger于2020年创建。