Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
## credit: http://fabian-affolter.ch/blog/the-lineinfile-module-of-ansible/
---
- hosts: alpine_install
user: root
tasks:
# - name: create a complete empty file
# command: /usr/bin/touch /test/test.conf
- name: create a new file with lineinfile
lineinfile: dest=/test/test.conf
regexp='^' line=''
state=present
create=True
- name: add a string to the new file
lineinfile: dest=/test/test.conf
regexp='^'
line='Hello, World!'
state=present
- name: add a multiline string to the file and delete the string from before
# Be aware, with the given regex the string will be added everytime the playbook runs
lineinfile: dest=/test/test.conf
regexp='^'
line='#This is a comment\n#Another comment\n#Another comment, again\n#Again a comment\n#The last comment'
state=present
- name: add a single line, in this case the same as the comment but uncommented
lineinfile: dest=/test/test.conf
regexp='^Another'
insertafter='^#Another'
line='Another comment, no longer a comment'
state=present
- name: remove the line '#Again a comment'
lineinfile: dest=/test/test.conf
regexp='^#Again'
state=absent
- name: add a new string at the beginning of the file
lineinfile: dest=/test/test.conf
regexp='^This'
insertbefore=BOF
line='This is no longer a comment'
- name: add a new string before the match
lineinfile: dest=/test/test.conf
regexp='^Another'
insertbefore='^#Another'
line='Another comment, no longer'
- name: add a new string at the end of the file
lineinfile: dest=/test/test.conf
regexp=''
insertafter=EOF
line='The latest entry'
@gvenka008c

This comment has been minimized.

Copy link

commented Feb 11, 2016

I have the file with the below content.

"Bamboo": {
"Endpoint": "http://xx.xx.xxx.xxx:800",
"Zookeeper": {
"Host": "//xx.xxx.xxx.xx:2181,xx.xxx.xxx.xx:2181,xx.xxx.xxx.xx:2181",
"Path": "/marathon-haproxy/state",
"ReportingDelay": 5
}
},

I wanted to dynamically update the below line using lineinfile
"Endpoint": "http://xx.xx.xxx.xxx:800",

My Ansible has the below code
lineinfile: dest=/var/bamboo/production.json.bak state=present regexp="^ "Bamboo"":" {" insertafter=" "Bamboo"":"{" line=" "Endpoint"":" "http://{{ansible_default_ipv4.address}}:8080" "

For some reason, it is adding the line to the EOF.

can you please suggest on how can i fix it?

@daneshg

This comment has been minimized.

Copy link

commented Jun 14, 2016

  • name : check regex

    lineinfile : dest=file

               regexp='Endpoint'
    
               line=' "Endpoint":"http://xx.xx.xxx.xxx:800" '
    
               state=present
    

find Endponit with regexp and replace that by new line

@dtolj

This comment has been minimized.

Copy link

commented Oct 16, 2016

How to add a new string before the FIRST match?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.