在单个文件中定义资源时如何在 init.pp 或 node.pp 中使用定义资源

how to use define resource in init.pp or node.pp when define resource in individual file

如何在其他 *.pp 中定义一些资源以及如何在 init.pp 中使用?

我写了一个模块来测试这样定义:

vsftpd
├── files
│   ├── test
│   │   ├── 1.txt
│   │   ├── 2.txt
│   │   ├── 3.txt
│   │   └── 4.txt
│   └── vsftpd.conf
├── manifests
│   ├── file.pp
│   ├── init.pp
│   ├── test.pp
│   └── user.pp
└── templates

我定义了 2 class 和一个定义资源来测试,没有任何定义资源,它 运行 很好,我也可以定义一个资源并在 init.pp 中使用它vsftpd::createfile

但是如果我在另一个文件中定义 vsftpd::test test.pp 它只是不能 运行,错误: 无法在节点 agent.jayma.com 上为 agent.jayma.com 找到 class ::vsftpd::test 即使我先包括 ::vsftpd::test,我也用谷歌搜索了很多,但什么也没找到

file.pp
------------------
class vsftpd::file{
  file{'test':
      ensure    => 'directory',
      path      => '/tmp/test/',
      source    => "puppet://puppet.jaymz.com/modules/vsftpd/test/",
      recurse   => true

  }

}
------------------------
user.pp
------------------------
class vsftpd::user{
  user{'ftp_jaymz':
     ensure     => present,
     uid        => '504',
     home       => '/home/ftp_jaymz',
     shell      => '/sbin/nologin',
     password   => '$svfAKdBu$c8MnfTtA.12Nny2131Vb/jhPTR3/',
     gid        => 'ftp',
  }
}
-----------------------------------
test.pp
-----------------------------------
define vsftpd::test ($name=$title,$content){
   file {'abc':
      path      => "/tmp/${name}_text.txt",
      content   => "this is a test ${content}"

   }

}
--------------------------------------
init.pp
-------------------------------------

 - class vsftpd {    package {'vsftpd':
        ensure     => installed,   }

      service {'vsftpd':
        ensure     =>running,
        subscribe  =>File["vsftpd.conf"],    }

      file {'vsftpd.conf':
         path      => '/etc/vsftpd/vsftpd.conf',
         require   => Package["vsftpd"],
         source    => "puppet://broker.jaymz.com/modules/vsftpd/vsftpd.conf"
   }    include ::vsftpd::user   
   include ::vsftpd::file

      define
   vsftpd::createfile($name1=$title,$content1){
         file{"/tmp/$name1.txt":
             ensure => file,
             content => $content1,
             mode    => 0644,

         }


      }    vsftpd::createfile{'nick':
              content1     => "hi nick",    }

      vsftpd::createfile{'jaymz':
              content1     => "hi jaymz",    }

      include ::vsftpd::test   
   ::vsftd::test{'jaymz_test':
              content      =>"hi jaymz_test",    }

   }

----------------------------------------------------

您需要从哪个文件获取源代码? 1.txt、2.txt 还是其他?如果您需要来自 1.txt 的来源,则应将其更改为

来自

source    => "puppet://puppet.jaymz.com/modules/vsftpd/test/",

source    => "puppet://puppet.jaymz.com/modules/vsftpd/test/1.txt",