Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Puppet 在augeas中修改yml文件_Puppet_Puppet Enterprise_Augeas - Fatal编程技术网

Puppet 在augeas中修改yml文件

Puppet 在augeas中修改yml文件,puppet,puppet-enterprise,augeas,Puppet,Puppet Enterprise,Augeas,我正试图通过augeas资源修改/设置傀儡清单中的/etc/elasticsearch/elasticsearch.yml文件,但它不起作用。有人能解释一下我应该指定的lens文件吗?我是否需要为此安装一些额外的东西,或者默认安装中包含所需的镜头 我正在尝试这样更改键值对: key1.key2: value eg: cluster.name: cms-es 我的代码: augeas { "elastic_config": context => "/files/etc/e

我正试图通过
augeas
资源修改/设置傀儡清单中的
/etc/elasticsearch/elasticsearch.yml
文件,但它不起作用。有人能解释一下我应该指定的
lens
文件吗?我是否需要为此安装一些额外的东西,或者默认安装中包含所需的镜头

我正在尝试这样更改键值对:

 key1.key2:  value
 eg:


cluster.name: cms-es
我的代码:

  augeas { "elastic_config":
  context => "/files/etc/elasticsearch/elasticsearch.yml",
  changes => [
  "set 'network.host:' ipaddress_eth0",
  "set 'cluster.name:' cms-es",
  "set 'node.name:' ec2_hostname",
  "set 'bootstrap.mlockall:' true",
 ],
}

Augeas当前无法编辑YAML文件,因为无法使用Augeas镜头描述YAML语法。它需要对Augeas的核心进行修改以支持这一点(以支持一致的标识,这对于这种格式是强制性的)。

这不是最好的解决方案,但是如果您只依赖冒号分隔的配置文件,我有一个镜头可以实现这一点

/usr/share/augeas/lens/colonvars.aug
中复制并粘贴以下内容(或使用模块自动执行此操作)


我看到你在这里发表评论之前正在修改augeas语法,所以你知道有一个语法,它只是不太完整。简单的结构确实可以通过,因此可以编辑。确实有语法,某些部分可以实现,但目前无法使用AUGEA对其进行完整描述(因为,如上所述,一致识别的要求)。
(*
Module: Colonvars
    Parses a simple colon (:) delimited files

Author: Alex Simenduev <shamil.si@gmail.com>

About: Usage Example
(start code)
    augtool> set /augeas/load/Colonvars/lens "Colonvars.lns"
    augtool> set /augeas/load/Colonvars/incl "/etc/elasticsearch/elasticsearch.yml"
    augtool> load

    augtool> get /files/etc/elasticsearch/elasticsearch.yml/cluster.name
    /files/etc/elasticsearch/elasticsearch.yml/cluster.name = elk

    augtool> set /files/etc/elasticsearch/elasticsearch.yml/node.name elk-node-0
    augtool> save
    Saved 1 file(s)

    $ grep node.name /etc/elasticsearch/elasticsearch.yml
    node.name: elk-node-0
(end code)

About: License
    This file is licensed under the LGPL v2+, like the rest of Augeas.
*)

module Colonvars =

   let colon = del /[ \t]*:[ \t]*/ ": "
   let entry = Build.key_value_line Rx.word colon (store Rx.space_in)
   let lns   = (Util.empty | Util.comment | entry)*
augeas { "elastic_config":
    incl => "/etc/elasticsearch/elasticsearch.yml",
    lens => "Colonvars.lns",
    changes => [
        "set network.host ipaddress_eth0",
        "set cluster.name cms-es",
        "set node.name ec2_hostname",
        "set bootstrap.mlockall true",
    ]
}