Hello !!
This post is for exploring the "lineinfile" vs 'blockinfile' and "replace" modules. The replace and the lineinfile use the path parameter to mark: The file to modify. lineinfile module is used to ensure[s] a particular line is in a file, or [to] replace an existing line using a back-referenced (backref) regular expression (regex).
Use the replace module if you want to change multiple, similar lines
The "dest" parameter is used for modules creating new files like template or copy modules. Just replace dest with path and both provided examples should work as expected.
Adding lines in the file
Adding a line in a file, if a file does not exist then it will create it.
--- # Filename: adding_line.yml - name: testing LineInFile module hosts: localhost tasks: - name: Add a line to a file if the file does not exist lineinfile: path: /tmp/hosts line: 192.168.1.99 ansiblectl.devopshunter.com ctl create: yesThe execution of the above playbook gives us the, update of the file /tmp/hosts file created with the line value. check the content of the file.
Screenshot 1
Adding a line in file create if not |
Insert before
--- - name: testing inline hosts: localhost gather_facts: no tasks: - name: insert before lineinfile: dest: /tmp/hosts line: 192.168.0.19 bhagathsing.devops.com bhagathsing insertbefore: (192.168.0.18*)
Ansible the lineinfile module using insertbefore parameter |
Insert After
--- - name: testing inline hosts: localhost gather_facts: no tasks: - name: insert after lineinfile: dest: /tmp/hosts line: 192.168.0.18 freedome.devops.com freedome insertafter: (192.*)
lineinfile module with 'insertafter' parameter |
Removal lines in a file of httpd.conf
--- - name: testing inline hosts: localhost gather_facts: no tasks: - name: remove commented lines lineinfile: dest: /tmp/sample regex: "(^#)" state: absent backup: yes - name: remove tabbed commented lines lineinfile: dest: /tmp/sample regex: "(#)" state: absent - name: remove blank lines lineinfile: dest: /tmp/sample regex: "(^\n)" state: absentThe execution of removal of lines from the httpd.conf file.
The lineinfile module uses to remove comment lines of httpd.conf file |
Replace module
/tmp/mytest.txt Step 2: Create a playbook with the File name: test-replace.yml and the content as follows--- # Ansile replace module example - name: Ansile replace module gather_facts: no hosts: localhost become: yes tasks: - name: mytest.txt replace replace: path: /tmp/mytest.txt regexp: "ofmw" replace: "Oracle Fusion Middleware"Assume that you have inventory file having 'webserver' group with node1, node2
Step 3: Execution output is as follows:ansible-playbook test-replace.ymlExecution Screen shots:
'blockinfile' module
If you have multiple lines that need to be inserted into a file in remote box with Ansible blockinfile module. It works similar ot lineinfile module but here multiple lines can be processed.--- # Filename: file-blocking.yaml # targets [optional] if you pass extra vars ok, otherwise localhost - name: Creating File with blockinfile gather_facts: no hosts: "{{ targets | default('localhost') }}" tasks: - name: Create new file file: path: /tmp/ansible-slogun.txt state: touch - name: Block of text adds to file blockinfile: path: /tmp/ansible-slogun.txt block: Ansible has a large collection of inbuilt modules to manage various cloud resources. The book begins with the concepts needed to safeguard your credentials and explain how you interact with cloud providers to manage resources. Each chapter begins with an introduction and prerequisites to use the right modules to manage a given cloud provider. Learn about Amazon Web Services, Google Cloud, Microsoft Azure, and other providers.The playbook can be using no extra vars that means localhost will be target host, the executed as follows :
ansible-playbook file-blocking.yaml
No comments:
Post a Comment