使用ansible

时间:2018-11-05 07:12:51

标签: ansible

请在这里为我提供指导。

我想在一个配置文件中注释一行,并且需要使用ansible取消注释另一行。

我的文件内容如下。


    <include location="conf/basicUserRegistry.xml"/>                                           -------------------------this i want to comment 
<!--include location="conf/ldapUserRegistry.xml"/-->                                            --------------------------- this line i want to uncomment

我尝试使用下面的剧本,即使它没有更改文件更改,也没有显示任何错误。


  • 名称:启用LDAP 主机:localhost 任务:
    • 名称:禁止基本用户注册 lineinfile: 路径:/opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml regexp:'^ \ s *。* $' 行:“;” backrefs:是的

      变为:true


  • 名称:启用LDAP USER_REGISTRY 主机:localhost 任务: lineinfile:   目标:/opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml   regexp:'^(。)(。)$'   行:“;”   backrefs:是的

输出:

PLAY [启用LDAP] ********************************************** ****************************************************** **************************************************

任务[聚会事实] ********************************************** ****************************************************** ********************************************** 好的:[localhost]

任务[disbale基本用户注册表] *************************************** ****************************************************** ************************************** 好的:[localhost]

PLAY RECAP ********************************************* ****************************************************** ****************************************************** * 本地主机:ok = 2更改= 0不可达= 0失败= 0

3 个答案:

答案 0 :(得分:0)

这是您要查找的代码吗?

gmtime_r

这不是幂等的!如果 regex 存在,则 line 将替换找到的行。如果 regex 不存在,则仍会添加* line“。要使其幂等,请使用 replace 模块(以下示例)。

或者,也许是这个?

vars:
  mark_1: 'include location="conf/basicUserRegistry.xml"/'
  mark_2: 'include location="conf/ldapUserRegistry.xml"/'
tasks:
  - lineinfile:
      path: server.xml
      regex: "^<!--{{ mark_2 }}-->"
      line: "<{{ mark_2 }}>"
  - lineinfile:
      path: server.xml
      regex: "^<{{ mark_1 }}>"
      line: "<!--{{ mark_1 }}-->"

  - lineinfile:
      path: server.xml
      regex: ".{{ mark_2 }}."
      line: "<{{ mark_2 }}>"
  - lineinfile:
      path: server.xml
      regex: ".{{ mark_1 }}."
      line: "<!--{{ mark_1 }}-->"

答案 1 :(得分:0)

下面是我的剧本,它没有更改文件上的任何内容

private string _description;
        public string Description
        {
            get { return _description; }
            set
            {
                _description = value;
                NotifyOfPropertyChange(() => Description);
            }
        }

答案 2 :(得分:0)

解决这个问题的一种更清洁的方法是利用Ansible xml module

示例(假设您的示例显示了完整的文件):

tasks:
  - xml:
      file: server.xml
      xpath: /include
      attribute: location
      value: conf/ldapUserRegistry.xml