blockinfile:
Jump to navigation
Jump to search
↑ https://stackoverflow.com/a/41284686
path: backup: insertafter: marker: [1]
[[marker:]] "{{mark}} TEST"
marker: "# Request {mark}" marker_begin: "Ticketnumer" marker_end: "end"
- blockinfile: path: /path/to/your_file state: present insertafter: EOF content: | your first line your second line your third line
- blockinfile: | dest=/etc/network/interfaces backup=yes content="iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0"
# BEGIN ANSIBLE MANAGED BLOCK your first line your second line your third line # END ANSIBLE MANAGED BLOCK
Blockinfile and conditional[edit]
- !/usr/bin/env ansible-playbook
- hosts: localhost become: no gather_facts: no tasks: - name: "Searching for a String" register: ispresentvar shell: "grep -i 'your' /tmp/your_file.txt" - name: "sample task in case the String present in the file" debug: msg="INFO your is present in /tmp/your_file.txt" when: ispresentvar is changed - blockinfile: path: /tmp/kk.txt state: present #backup: yes marker: "# Request {mark}" marker_begin: "Ticketnumer" marker_end: "end" content: | your first line your second line your third line when: ispresentvar is not changed
Official examples[edit]
# Before Ansible 2.3, option 'dest' or 'name' was used instead of 'path' - name: Insert/Update "Match User" configuration block in /etc/ssh/sshd_config ansible.builtin.blockinfile: path: /etc/ssh/sshd_config block: | Match User ansible-agent PasswordAuthentication no - name: Insert/Update eth0 configuration stanza in /etc/network/interfaces (it might be better to copy files into /etc/network/interfaces.d/) ansible.builtin.blockinfile: path: /etc/network/interfaces block: | iface eth0 inet static address 192.0.2.23 netmask 255.255.255.0 - name: Insert/Update configuration using a local file and validate it ansible.builtin.blockinfile: block: "Template:Lookup('ansible.builtin.file', './local/sshd config')" path: /etc/ssh/sshd_config backup: yes validate: /usr/sbin/sshd -T -f %s
- name: Insert/Update HTML surrounded by custom markers after <body> line ansible.builtin.blockinfile: path: /var/www/html/index.html marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->" insertafter: "<body>" block: | <h1>Welcome to {{ ansible_hostname }}</h1> <p>Last updated on {{ ansible_date_time.iso8601 }}</p> - name: Remove HTML as well as surrounding markers ansible.builtin.blockinfile: path: /var/www/html/index.html marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->" block: "" - name: Add mappings to /etc/hosts ansible.builtin.blockinfile: path: /etc/hosts block: | {{ item.ip }} {{ item.name }} marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}" loop: - { name: host1, ip: 10.10.1.10 } - { name: host2, ip: 10.10.1.11 } - { name: host3, ip: 10.10.1.12 } - name: Search with a multiline search flags regex and if found insert after blockinfile: path: listener.ora block: "{{ listener_line | indent(width=8, first=True) }}" insertafter: '(?m)SID_LIST_LISTENER_DG =\n.*\(SID_LIST =' marker: " <!-- {mark} ANSIBLE MANAGED BLOCK -->"
Errors[edit]
ERROR! 'blockinfile' is not a valid attribute for a Play
Related[edit]
See also[edit]
- Ansible:
lineinfile, blockinfile
- Ansible modules:
gather_facts, set_fact
,ansible.builtin.file
,lineinfile
,stat
,group
,mount
,git:
,package:
,command:
,shell:
,raw:
,template:
,register:
,user:
, Ansible playbooks examples,tasks:
,lineinfile, blockinfile:
,shell:
,command:
,raw:
,ansible.builtin.file, service:, aws.ecs_taskdefinition, aws.asg, docker_container, kubernetes.core.k8s
,community.
,include_tasks
Advertising: