# Appending a line in a file

**URL:** <https://forum.ansible.com/t/appending-a-line-in-a-file/29769>\
**Category:** Ansible Project\
**Created:** [February 26, 2019, 1:30am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769 "2019-02-26T01:30:28Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![lpescatore](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@lpescatore](https://forum.ansible.com/u/lpescatore)\
**Post date:** [February 26, 2019, 1:30am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/1 "2019-02-26T01:30:28Z")

</div>

Hi,  
I want to add some stuff to my /etc/hosts file.  
For instance, if my /etc/hosts says “server.corp”, I want to append that in all my machines to where it says “[server.corp.company.com](http://server.corp.company.com)”. Then I want it to save.  
What is the best module for that , and can you tell me what the play might look like?

---

<div class="post-metadata">

**Author:** ![Luca\_Cazzaniga](https://avatars.discourse-cdn.com/v4/letter/l/977dab/32.png) [@Luca\_Cazzaniga](https://forum.ansible.com/u/Luca_Cazzaniga)\
**Post date:** [February 26, 2019, 1:46am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/2 "2019-02-26T01:46:39Z")

</div>

Hi try the module lineinfile, see the manual page at [https://docs.ansible.com/ansible/latest/modules/lineinfile\_module.html](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html)

---

<div class="post-metadata">

**Author:** ![lpescatore](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@lpescatore](https://forum.ansible.com/u/lpescatore)\
**Post date:** [February 26, 2019, 2:01am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/3 "2019-02-26T02:01:49Z")

</div>

Thanks Luca, I sorta thought that was it, could you give a quick example on how the file would look?

---

<div class="post-metadata">

**Author:** ![Kylix\_Kumar](https://avatars.discourse-cdn.com/v4/letter/k/c37758/32.png) [@Kylix\_Kumar](https://forum.ansible.com/u/Kylix_Kumar)\
**Post date:** [February 26, 2019, 2:10am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/4 "2019-02-26T02:10:20Z")

</div>

![image1.jpeg](https://us1.discourse-cdn.com/ansible/original/2X/b/b5e10942bcda8dfa54a46b5695a8d458061da00e.jpeg)

---

<div class="post-metadata">

**Author:** ![lpescatore](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@lpescatore](https://forum.ansible.com/u/lpescatore)\
**Post date:** [February 26, 2019, 2:11am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/5 "2019-02-26T02:11:58Z")

</div>

Thanks kylix,  
Where would the append go?

---

<div class="post-metadata">

**Author:** ![Luca\_Cazzaniga](https://avatars.discourse-cdn.com/v4/letter/l/977dab/32.png) [@Luca\_Cazzaniga](https://forum.ansible.com/u/Luca_Cazzaniga)\
**Post date:** [February 26, 2019, 2:33am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/6 "2019-02-26T02:33:39Z")

</div>

I don’t know if I got your specification correctly

anyway this is an example

fusillator@catorcio:~/Code/ansible/test$ cat lineinfile.yml

- hosts: localhost  
tasks:

- name: lineinfile  
lineinfile:  
path: ./hosts  
regexp: ‘^(._) server.corp\b(._)$’  
line: ‘\1 server.corp [server.corp.company.com](http://server.corp.company.com) \2’  
backrefs: yes

fusillator@catorcio:~/Code/ansible/test$ cat hosts  
127.0.0.1 localhost  
192.168.192.168 server.corp  
fusillator@catorcio:~/Code/ansible/test$ ansible-playbook lineinfile.yml

PLAY [localhost] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

TASK [Gathering Facts] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost]

TASK [lineinfile] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
changed: [localhost]

PLAY RECAP \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
localhost : ok=2 changed=1 unreachable=0 failed=0

fusillator@catorcio:~/Code/ansible/test$ cat hosts  
127.0.0.1 localhost  
192.168.192.168 server.corp [server.corp.company.com](http://server.corp.company.com)

regards

Luca

---

<div class="post-metadata">

**Author:** ![Luca\_Cazzaniga](https://avatars.discourse-cdn.com/v4/letter/l/977dab/32.png) [@Luca\_Cazzaniga](https://forum.ansible.com/u/Luca_Cazzaniga)\
**Post date:** [February 26, 2019, 2:41am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/7 "2019-02-26T02:41:37Z")

</div>

I don’t know if I got your specification correctly

anyway this is an example

$ cat lineinfile.yml

- hosts: localhost  
tasks:

- name: lineinfile  
lineinfile:  
path: ./hosts  
regexp: ‘^(._) server.corp\b(._)$’  
line: ‘\1 server.corp [server.corp.company.com](http://server.corp.company.com) \2’  
backrefs: yes

$ cat hosts  
127.0.0.1 localhost  
192.168.192.168 server.corp  
fusillator@catorcio:~/Code/ansible/test$ ansible-playbook lineinfile.yml

PLAY [localhost] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

TASK [Gathering Facts] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [localhost]

TASK [lineinfile] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
changed: [localhost]

PLAY RECAP \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
localhost : ok=2 changed=1 unreachable=0 failed=0

$ cat hosts  
127.0.0.1 localhost  
192.168.192.168 server.corp [server.corp.company.com](http://server.corp.company.com)

regards

Luca

---

<div class="post-metadata">

**Author:** ![lpescatore](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@lpescatore](https://forum.ansible.com/u/lpescatore)\
**Post date:** [February 26, 2019, 2:56am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/8 "2019-02-26T02:56:09Z")

</div>

Thank you sir, I am trying to find out how that exactly would look in my file (I am new to regexp so please forgive me).  
Heres what my file looks like:

cat /etc/hosts  
127.0.0.1 localhost  
127.0.1.1 server-rack5-test-server-5

What I need it to change to (on a dynamic level, as in “server-rack5-test-server-5” will of course always be different"):

cat /etc/hosts  
127.0.0.1 localhost  
127.0.1.1 [server-rack5-test-server-5.corp.company.com](http://server-rack5-test-server-5.corp.company.com)

Could you help me with that?

---

<div class="post-metadata">

**Author:** ![Luca\_Cazzaniga](https://avatars.discourse-cdn.com/v4/letter/l/977dab/32.png) [@Luca\_Cazzaniga](https://forum.ansible.com/u/Luca_Cazzaniga)\
**Post date:** [February 26, 2019, 8:51am UTC](https://forum.ansible.com/t/appending-a-line-in-a-file/29769/9 "2019-02-26T08:51:35Z")

</div>

hi, you have to find common pattern in the hostnames and forge subregexp in brakets…

for example if the changing part is the number enclose them in brackets and backreference them in line as \cardianalnumber  
in the example below

\1 will reference to (.\*)  
\2 will reference to the first (\d+)

\3 will reference to the second (\d+)  
\4 will reference to the tailing (.\*)

At the moment I can’t test the playbook, anyway you try something like

- hosts: localhost  
tasks:

- name: lineinfile  
lineinfile:  
path: ./hosts  
regexp: ‘^(._)\bserver-rack(\d+)-test-server-(\d+)\b(._)$’  
line: ‘\1 [server-rack\2-test-server-\3.corp.company.com](http://server.corp.company.com) \4’  
backrefs: yes

Have a look at [https://docs.python.org/2/library/re.html](https://docs.python.org/2/library/re.html) for further details

regards

Luca
