Difference between revisions of "Blockinfile:"
Jump to navigation
Jump to search
↑ https://stackoverflow.com/a/41284686
(Created page with " == Related == * <code>lineinfile:</code> == See also == * {{Ansible}} Category:Ansible") |
|||
(28 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{lowercase}} | ||
+ | * https://docs.ansible.com/ansible/latest/collections/ansible/builtin/blockinfile_module.html | ||
+ | [[path:]] | ||
+ | [[backup:]] | ||
+ | [[insertafter:]] | ||
+ | [[marker:]] <ref>https://stackoverflow.com/a/41284686</ref> | ||
+ | <nowiki>[[marker:]] "{{mark}} TEST"</nowiki> | ||
+ | |||
+ | |||
+ | 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 == | ||
+ | #!/usr/bin/env ansible-playbook | ||
+ | <pre> | ||
+ | - 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 | ||
+ | </pre> | ||
+ | |||
+ | == Official examples == | ||
+ | # 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: "{{ lookup('ansible.builtin.file', './local/sshd_config') }}" | ||
+ | path: /etc/ssh/sshd_config | ||
+ | backup: yes | ||
+ | [[validate:]] /usr/sbin/[[sshd -T]] -f %s | ||
+ | <pre> | ||
+ | - 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 -->" | ||
+ | </pre> | ||
+ | |||
+ | == Errors == | ||
+ | * <code>ERROR! 'blockinfile' is not a valid attribute for a Play</code> | ||
== Related == | == Related == | ||
* <code>[[lineinfile:]]</code> | * <code>[[lineinfile:]]</code> | ||
+ | * [[regex]] | ||
+ | * <code>[[when:]]</code> | ||
== See also == | == See also == | ||
− | * {{Ansible}} | + | * {{lineinfile}} |
+ | * {{Ansible modules}} | ||
[[Category:Ansible]] | [[Category:Ansible]] |
Latest revision as of 11:36, 9 September 2023
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: