Ansible修改行

时间:2018-05-10 10:43:10

标签: python regex ansible

我有一个名为 myfile.php 的文件,其中有一行:

$host:"" //this is where Ansible will add host IP address

我希望这一行看起来像:

$host:"192.168.0.12"

所以我在这里有两个问题:

  1. 如何使用Ansible playbook,如何定义一个正则表达式,表示grep以$host开头并以//this is where Ansible will add host IP address结尾的行然后放在""此IP地址之间162.168.168.0.12。我想修改这一行而不是替换它,虽然我知道它会导致相同的结果。
  2. 如何让Ansible从主机自动grep这个IP地址,避免在剧本中手动输入。
  3. 您的回答非常有用,谢谢。

1 个答案:

答案 0 :(得分:0)

使用replace模块。

cat testfile 

$host:"" //this is where Ansible will add host IP address

正在播放剧本:

ansible-playbook test.yaml
    ---
    - hosts: localhost
      gather_facts: no
      tasks:
        - replace:
            path: testfile
            replace: "$host:\"{{item}} "
            regexp: '\$host:\"'
          with_items:
            - 192.168.0.12
            - 192.168.0.13

这将使其在$host: "之后写入,并将保持在""

之间
cat testfile 

$host:"192.168.0.13 192.168.0.12 " //this is where Ansible will add host IP address
  

参考:   http://docs.ansible.com/ansible/latest/modules/replace_module.html#replace-module