# Inserting an entire block of configuration using lineinfile

**URL:** <https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979>\
**Category:** Ansible Project\
**Created:** [April 9, 2014, 2:49pm UTC](https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979 "2014-04-09T14:49:03Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michael\_Baydoun](https://avatars.discourse-cdn.com/v4/letter/m/aeb1de/32.png) [@Michael\_Baydoun](https://forum.ansible.com/u/Michael_Baydoun)\
**Post date:** [April 9, 2014, 2:49pm UTC](https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979/1 "2014-04-09T14:49:03Z")

</div>

I need to insert many lines of configuration and must use lineinfile or something similar.  
The particular application in question also writes changes over time to other parts of the same file.

What is the best, cleanest way to accomplish this?  
Is there a solution other than to string a bunch of lineinfile modules together?

---

<div class="post-metadata">

**Author:** ![Antonio\_Marin](https://avatars.discourse-cdn.com/v4/letter/a/e5b9ba/32.png) [@Antonio\_Marin](https://forum.ansible.com/u/Antonio_Marin)\
**Post date:** [April 9, 2014, 2:51pm UTC](https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979/2 "2014-04-09T14:51:20Z")

</div>

You can try to loop using with\_items: and storing the regexs, lines, etc in variables.

> **(attachments)**
>
> ![email_smslogo.png](https://us1.discourse-cdn.com/ansible/original/2X/b/bf3e6c6449d4dec753826c49c05d006b991d5909.png)  
> ![email_icon_phone.png](https://us1.discourse-cdn.com/ansible/original/2X/b/b74cd524dbbf0e00b6a3785174947431b0201bac.png)  
> ![email_icon_skype.png](https://us1.discourse-cdn.com/ansible/original/2X/e/e823c7e1a55292a1f987d45940679ebd0be5270c.png)  
> ![email_icon_location.png](https://us1.discourse-cdn.com/ansible/original/2X/3/338e299801b9a07a4c7900163a9772f30da0a261.png)  
> ![email_icon_email.png](https://us1.discourse-cdn.com/ansible/original/2X/4/46940bb242ccbb82b87bd8e8f1749e2430b0c148.png)  
> ![email_icon_linkedin.png](https://us1.discourse-cdn.com/ansible/original/2X/c/ca838365667d8197fc713b2d1e1c59bf98a0871c.png)  
> ![email_icon_website.png](https://us1.discourse-cdn.com/ansible/original/2X/5/5c81c3c6ff3c344a10d980a674d7ef9d98002b77.png)

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [April 15, 2014, 8:36pm UTC](https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979/3 "2014-04-15T20:36:35Z")

</div>

Yep, +1 to this.

Sorry about the misbehaving application 🙂

> **(attachments)**
>
> ![email_icon_linkedin.png](https://us1.discourse-cdn.com/ansible/original/2X/c/ca838365667d8197fc713b2d1e1c59bf98a0871c.png)  
> ![email_icon_location.png](https://us1.discourse-cdn.com/ansible/original/2X/3/338e299801b9a07a4c7900163a9772f30da0a261.png)  
> ![email_icon_skype.png](https://us1.discourse-cdn.com/ansible/original/2X/e/e823c7e1a55292a1f987d45940679ebd0be5270c.png)  
> ![email_smslogo.png](https://us1.discourse-cdn.com/ansible/original/2X/b/bf3e6c6449d4dec753826c49c05d006b991d5909.png)  
> ![email_icon_email.png](https://us1.discourse-cdn.com/ansible/original/2X/4/46940bb242ccbb82b87bd8e8f1749e2430b0c148.png)  
> ![email_icon_website.png](https://us1.discourse-cdn.com/ansible/original/2X/5/5c81c3c6ff3c344a10d980a674d7ef9d98002b77.png)  
> ![email_icon_phone.png](https://us1.discourse-cdn.com/ansible/original/2X/b/b74cd524dbbf0e00b6a3785174947431b0201bac.png)

---

<div class="post-metadata">

**Author:** ![Michael\_Heca](https://avatars.discourse-cdn.com/v4/letter/m/a183cd/32.png) [@Michael\_Heca](https://forum.ansible.com/u/Michael_Heca)\
**Post date:** [April 16, 2014, 7:58pm UTC](https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979/4 "2014-04-16T19:58:00Z")

</div>

For editing /etc/network/interfaces I use replace module with some patches.

> - name: setup docker0 bridge
> 
> replace:
> 
> dest: /etc/network/interfaces
> 
> regexp: ‘^(# role docker._[\n\r]+)?iface\s+docker0\s+._[\n\r]+([\t]+._[\n\r]?)_(# role docker.\*[\n\r]?)?’
> 
> replace: |
> 
> # role docker script config BEGIN
> 
> iface docker0 inet static
> 
> bridge\_ports none
> 
> bridge\_stp off
> 
> bridge\_maxwait 0
> 
> bridge\_fd 0
> 
> address {{ docker\_net\_prefix }}.255.254
> 
> netmask 255.255.0.0
> 
> # role docker script config END
> 
> append: yes
> 
> register: redocker

I have only trouble with missing trailing newline.

Dne středa, 9. dubna 2014 16:49:03 UTC+2 Michael Baydoun napsal(a):

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [April 17, 2014, 2:28am UTC](https://forum.ansible.com/t/inserting-an-entire-block-of-configuration-using-lineinfile/14979/5 "2014-04-17T02:28:48Z")

</div>

That regex is a brutal one. Congrats. I think.

This is really why I prefer the template module 99.9999999% of the time. Ok, 100% 🙂
