我正在尝试创建一个查找php数组的ansible playbook条目
$array = {
'some\value',
};
并在该数组中添加一行
$array = {
'some\value',
'another\value,
};
这就是我尝试过的,虽然它添加了我之后的行,但每次传递都会不断添加
- name: Add another\value dummy.php
lineinfile:
dest=/path/to/dummy.php
insertafter='some\value'
line=" 'another\value',"
如果我继续运行剧本,我会得到
$array = {
'some\value',
'another\value,
'another\value,
'another\value,
'another\value,
'another\value,
'another\value,
};
我意识到我可能在这里做了一些非常愚蠢的事情,但我看不出怎么说"unless_it_exists='another\value'"
我也尝试了这个,这不起作用
- name: Add another\value dummy.php
lineinfile:
dest=/path/to/dummy.php
regexp="'some\\value',\n}"
backrefs=yes
line="'some\\value'\n 'another\\value',\n}"
编辑2014-07-28
只是为了澄清 - 我正在编辑的文件是this one https://github.com/...,我正在尝试在第124行添加一个数组成员,如下所示:
'Way\Generators\GeneratorsServiceProvider',
答案 0 :(得分:2)
我无法重现您描述的行为,因为lineinfile模块的重点是具有“unless_it_exists”功能。我能想到的唯一事情就是在Ansible之后改变行 - 例如你的IDE用标签替换空格。
我确实提出了以下任务:
(dummy.php现在包含要点内容)
- name: Add GeneratorsServiceProvider to dummy.php
lineinfile:
dest=files/dummy.php
insertafter="^ 'Illuminate\\\\Workbench\\\\WorkbenchServiceProvider',"
line=" 'Way\Generators\GeneratorsServiceProvider',"
我相信这可以做你想要的。
我已更改insertafter
因为它是正则表达式,并且应该转义反斜杠。这变得相当丑陋有四个反斜杠来解释Python也解析'\'字符,但我还没弄明白如何在Ansible中使用raw string notation。