木偶:是否有可能使用file_linetypes删除多行?

在我工作的公司的过去,有人在/etc/profileconfiguration了许多别名和导出。

从那时起我们已经实现了Puppet,并且有一个pipe理应用程序用户输出和别名的模块。

新模块实际上是一个非常简单的模块…它确保名为application_env.sh的文件驻留在/etc/profile.d/ ,基本上这是configuration相关输出和别名的文件。

我已经得到了一个任务,确保这些导出和别名仅来自application_env.sh文件,而不是来自/etc/profile

所以我打算做的是添加到application_env的清单,目前看起来像这样:

 class appuser-env { file{ "/etc/profile.d/appuser-env.sh": ensure => "present", content => template("appuser-env/appuser-env.sh.erb"), mode => "774", require => Class["facts"], } } 

另一种types看起来像这样:

 file_line{ "remove_old_exports_aliases": ensure => absent, line => ['export ANT_HOME_1_7_0=/appdir/org/apache/ant/1.7.0', 'export ANT_HOME=$ANT_HOME_1_7_0', 'export PATH=$ANT_HOME/bin:$PATH', 'export JAVA_HOME_1_6_0=/appdir/com/sun/jdk', 'export JAVA_HOME=$JAVA_HOME_1_6_0', 'export PATH=$JAVA_HOME/bin:$PATH','export ENVIRONMENT_TYPE=prod','export CVS_RSH=${CVS_RSH-ssh}# change default from rsh to ssh for cvs command','export TOMCAT_HOME_6_0_29=/appdir/org/apache/tomcat/6.0.29','export TOMCAT_HOME=$TOMCAT_HOME_6_0_29','export PATH=$PATH:$TOMCAT_HOME/bin','export VOLDEMORT_HOME=/appdir/voldemort-0.80.1/config/test_config3','export LOCATION=nyc'], path => '/etc/profile', } 

但是当我在相关机器上运行puppet agent -t时,出现以下错误:

 [root@server4 # puppet agent -t Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Info: Caching catalog for server4.company.com Info: Applying configuration version '1448374061' Error: /Stage[main]/appuser-env/File_line[remove_old_exports_aliases]: Could not evaluate: private method `chomp' called for #<Array:0x7fba5a3ead20> Notice: Finished catalog run in 16.90 seconds [root@server4 ]# 

任何想法这个错误意味着什么或如何正确完成?

尝试这个

 file { -- ----} file_line{ "remove_old_exports_aliases": ensure => absent, line => ['export ANT_HOME_1_7_0=/appdir/org/apache/ant/1.7.0'], path => '/etc/profile', }->file_line{ "remove aliases": ensure => absent, line => ['export ANT_HOME=$ANT_HOME_1_7_0'], path => '/etc/profile', } 

尝试,如果你可以把这个循环。

使用多个file_line资源,每个资源删除一行:

 # for all "file_line" resources . File_line { ensure => absent, path => '/etc/profile', } file_line { 'remove_old_exports_aliases': line => 'export ANT_HOME_1_7_0=/appdir/org/apache/ant/1.7.0'; 'remove aliases': line => 'export ANT_HOME=$ANT_HOME_1_7_0'; }