如何使用 Bash 脚本安装 Puppet 并立即 运行 一个模块?

How can I use Bash script to install Puppet and instantly run a module?

我目前无法让我的模块正常工作。

我的目标是拥有一个脚本,该脚本将添加一个存储库以安装支架、安装 puppet 并复制现有模块

finaldigi/manifests/init.pp ---->>> /etc/puppet/modules 文件夹

出于某种原因,如果我手动执行所有脚本命令,该模块可以正常工作,但是当我将它们放入脚本中并 运行 它时,它会显示此错误:

Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class packagemodule at line 1 on node xubuntu.dhcp.inet.fi

Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class packagemodule at line 1 on node xubuntu.dhcp.inet.fi

这是我的 init.pp 文件

class packagemodule {

       package { brackets:
               ensure => 'installed',
               allowcdrom => 'true',
       }

       package { apache2:
             ensure => 'installed',
             allowcdrom => 'true',
       }

       file {'/var/www/html/index.html':
             content => "testing testing",
       }
    }

还有我的剧本:

#!/bin/bash
echo | sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install -y puppet
sudo cp -r ./finaldigi /etc/puppet/modules
sudo puppet apply -e 'class {packagemodule:}'

是的,如果我手动键入所有命令,它确实有效并且不会显示任何错误,但是如果我开始将所有这些命令放入我的 bash 脚本中,它就不起作用并开始显示该错误。

我在这里错过了什么?

 sudo cp -r ./finaldigi /etc/puppet/modules

这将创建 /etc/puppet/modules/finaldigi/etc/puppet/modules/finaldigi/manifests/init.pp,但如果您在内部使用的是 class 名称,则该目录应称为 packagemodule

将其更改为:

 sudo cp -r ./finaldigi /etc/puppet/modules/packagemodule

(如果这不起作用,请提供 find /etc/puppet/modules 输出,提供您正在使用的 Puppet 版本,以及 puppet apply --configprint modulepath 的输出)