返回介绍

puppet-xinetd 模块

发布于 2025-02-18 00:20:46 字数 3099 浏览 0 评论 0 收藏 0

xinetd 是一个运行于类 Unix 操作系统的开放源代码的超级服务器(Super-server)守护进程。 它的功能是管理网络相关的服务。 xinetd 提供类似于 inetd+tcp_wrapper 的功能,由于其较高的安全性,xinetd 开始逐渐取代 inetd。 xinetd 监听来自网络的请求,从而启动相应的服务。

puppetlabs-xinetd 模块是由 puppet 官方维护的项目,用于管理 xinetd 服务。 puppetlabs-xinetd 项目地址: https://github.com/puppetlabs/puppetlabs-xinetd

1.先睹为快

不想看下面大段的代码说明,已经跃跃欲试了?

Ok,我们开始吧!

打开虚拟机终端并输入以下命令:

$  puppet apply -e "include ::xinetd"

命令执行完成后,Puppet 完成了对 xinetd 安装和配置,并启动了 xinetd 进程。

2.代码讲解

2.1 class xinetd

class xinetd 用于完成对 xinetd 的软件包的安装、配置文件的生成、服务的管理,代码比较简单,这里不再赘述。其中值得一提的是,在代码块的首段是关于文件的资源声明语句,其首字母大写的 File ,这与通常的 file 资源有何区别?

  File {
    owner   => 'root',
    group   => '0',
    notify  => Service[$service_name],
    require => Package[$package_name],
  }

这种以资源类型的首字母大写开头并且没有 title 的声明方式称为资源默认属性声明(Resource default statements),通过这种方式可以声明指定资源的默认属性。

在以上代码中, class xinetd 下所有的文件资源的默认属性被设置为:

  • 所有者为 root
  • 所属组为 0(即 root)
  • 文件发生变化将通知 xinetd 服务重启
  • 文件被管理前,需安装 xinetd 软件包

所以在 class xinted 出现的其他 file 资源的相关属性将以上默认值,例如:

  file { $conffile:
    ensure => file,
    mode => '0644',
    content => template('xinetd/xinetd.conf.erb'),
  }
  # 等价于:
  file { $conffile:
    ensure  => file,
    mode    => '0644',
    content => template('xinetd/xinetd.conf.erb'),
    owner => 'root',
    group => '0',
    notify => Service[$service_name],
    require => Package[$package_name],
  }

那么通过资源默认属性声明的方式,可以带来两点好处:

  • 确保了相同资源默认属性的一致性
  • 提高了代码复用

需要注意的是,资源默认属性声明的作用范围很大,如果你在某个类中使用了它,那么可能会对其他类或者定义产生影响,

因此,最佳实践是:只在 site.pp 中使用资源默认属性声明。

2.2 define xinetd::service

回顾一下,在上一节 puppet-rsync 模块中,类 rsync::server 声明了 xinetd::service 定义,用于创建某个 rsync 服务的 xinetd 的配置文件:

    xinetd::service { 'rsync':
      bind        => $address,
      port        => '873',
      server      => '/usr/bin/rsync',
      server_args => "--daemon --config ${conf_file}",
      require     => Package['rsync'],
    }

以上代码在 xinetd 中创建 rsync 服务的配置,指定了:

  • 服务的监听地址
  • 服务的运行端口
  • 服务的运行命令
  • 服务运行命令的参数
  • 服务运行的依赖

扩展阅读

动手练习

  1. nagios 是流行的开源监控项目,请使用 Puppet 部署 nagios 服务,并且通过 xinted 来管理 nagios 进程。

参考链接: https://github.com/example42/puppet-nagios

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文