在单个文件中定义资源时如何在 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",
如何在其他 *.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",