Puppet 7.10中file资源notify属性无法找到运行中apache2服务问题
问题1解答
在Debian/Ubuntu发行版中,安装apache2软件包时自动启动服务属于软件包本身的设计行为,确实是由包内置的安装后触发脚本(postinst脚本)执行的逻辑,同时该脚本默认也会将apache2设置为开机自启状态,和Puppet的默认逻辑无关。
问题2解答
该报错是Puppet的资源依赖规则导致的:Puppet执行配置清单时,所有被引用的资源必须在当前清单中显式声明,哪怕对应服务实际在系统中处于运行状态,只要清单里没有定义Service['apache2']资源,notify参数就无法找到对应关联对象,就会抛出该错误。
修复方案只需要在你的apache2-file.pp文件中补充声明apache2服务资源即可,修改后的完整配置如下:
# 声明apache2服务资源 service { 'apache2': ensure => running, enable => true, provider => 'systemd', } file { '/etc/apache2/ports.conf': ensure => present, replace => true, source => '/home/ubuntu/ports.conf', notify => Service['apache2'] }
修改后重新执行sudo puppet apply apache2-file.pp即可正常运行,后续配置文件发生变更也会自动触发apache2服务重载/重启。
内容的提问来源于stack exchange,提问作者sshekhar1980
相关产品推荐
相关产品推荐

