Ansible snippets: Difference between revisions

From DWIKI
 
Line 33: Line 33:


=Lineinfile=
=Lineinfile=
*[https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html Lininfile documentation]
*[https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html Lineinfile documentation]


==Quoting fun with lineinfile regex==
==Quoting fun with lineinfile regex==
Line 52: Line 52:
     regexp: '^(foo.*)'
     regexp: '^(foo.*)'
     line: '# \1'
     line: '# \1'
==Check for string in file==
    - name: Check for rotate setting
      lineinfile:
        path: "{{ rotatepath }}"
        regex: '^ *rotate 180$'
        state: absent
      register: result
    - debug: msg="{{ inventory_hostname }} {{ result.found }}"


=Files=
=Files=

Latest revision as of 16:29, 18 March 2024

Systemd

Randomize timer

Create /var/ansible/files/systemd/fstrim.conf

[Timer]
RandomizedDelaySec=3h

Playbook:

  tasks: 
     - name: check if /etc/systemd/system/fstrim.timer.d/ exists
       stat:
         path: /etc/systemd/system/fstrim.timer.d/
       register: override_dir
     - name: create /etc/systemd/system/fstrim.timer.d/
       file:
         path: /etc/systemd/system/fstrim.timer.d/
         state: directory
       when: override_dir.stat.exists == False
     - name: add fstrim.timer override
       copy:
         src: /var/ansible/files/systemd/fstrim.conf
         dest: /etc/systemd/system/fstrim.timer.d/override.conf
       notify: daemon-reload
   handlers:
     - name: daemon-reload
       systemd:
         daemon_reload: yes

Lineinfile

Quoting fun with lineinfile regex

- name: fix the needrestart config
  lineinfile:
    dest: /etc/needrestart/needrestart.conf
    state: present
    regexp: '^#\$nrconf{restart}'
    line: '$nrconf{restart} =  ''a'''
   when: ansible_distribution == 'Ubuntu' and ansible_distribution_major_version == '22'

Comment out a line

- name: comment out a line
  lineinfile:
    dest: /etc/needrestart/needrestart.conf
    state: present
    backrefs: true
    regexp: '^(foo.*)'
    line: '# \1'


Check for string in file

   - name: Check for rotate setting
     lineinfile:
       path: "Template:Rotatepath"
       regex: '^ *rotate 180$'
       state: absent
     register: result
   - debug: msg="Template:Inventory hostname Template:Result.found"

Files

Check if a file exists

 - name: check for a file
   stat:
     path: /etc/fstab
   register: fstab
- name: print message if exists
  ansible.builtin.debug:
    msg: "File /etc/fstab exists"
  when: fstab.stat.exists

Check if a command exists

   - name: check if mysqld is installed
     shell: which mysqld > /dev/null 2>&1 
     ignore_errors: true
     changed_when: false
     register: mysqld
     failed_when: mysqld.rc == 2