TUTOS.EU

Divers exemples de manipulations avec ansible


Effacement d'un répertoire

- name: "Delete /var/log/nrpe/centplugins/"
  ansible.builtin.file:
    path: /var/log/nrpe/centplugins
    state: absent
Lien vers le fichier : cliquez ici Copier le code

Effacement d'une ligne dans un fichier
Ici on supprime une ligne qui contient "services = " dans /etc/sssd/sssd.conf

En bonus, si la ligne est effectivement supprimée, on relance le service associé

- name: "sssd.conf : on efface la ligne services = nss, pam"
  lineinfile:
    path: /etc/sssd/sssd.conf
    regexp: '.*(services = ).*'
    state: absent
    backup: no
  register: result

- name: "Restart service sssd if needed"
  ansible.builtin.service:
    name: sssd
    state: restarted
  when: result is changed

Lien vers le fichier : cliquez ici Copier le code

Création du fichier /etc/sudoers.d/admins

- name: "Create file /etc/sudoers.d/admins"
  ansible.builtin.file:
    path: /etc/sudoers.d/admins
    owner: root
    group: root
    mode: '0640'
    state: touch
Lien vers le fichier : cliquez ici Copier le code

Copie d'un fichier, ici atix_gpg.pub

- name: Copie clé pgp
  ansible.builtin.copy:
    src: vault/atix_gpg.pub
    dest: /home/ansible/atix_gpg.pub
    owner: ansible
    group: users
Lien vers le fichier : cliquez ici Copier le code

Création d'un fichier et écriture de son contenu

- name: Create file for DL centreon
  copy:
    dest: "/etc/yum.repos.d/centreon.repo"
    content: |
      [centreon-stable-noarch]
      name=Centreon open source software repository.
      baseurl=https://yum.centreon.com/standard/22.10/el8/stable/noarch/
      enabled=1
      gpgcheck=1
      gpgkey=https://yum-gpg.centreon.com/RPM-GPG-KEY-CES
      module_hotfixes=1
Lien vers le fichier : cliquez ici Copier le code

Ecriture d'un block de lignes dans un fichier
ici /etc/ssh/sshd_config

- name: Create text block in a file
  ansible.builtin.blockinfile:
    path: /etc/ssh/sshd_config
    marker: "# {mark} ANSIBLE monuser MANAGED BLOCK"
    block: |
      Match Group monuser
      PasswordAuthentication no
      PubKeyAuthentication yes
Lien vers le fichier : cliquez ici Copier le code

Vérification de la présence du paramètre timeout=300 dans /etc/yum.conf
S'il existe on s'assure qu'il est réglé sur 300
S'il n'existe pas on crée la ligne

- name: "Dans /etc/yum.conf check présence timeout=300"
  replace:
    path: /etc/yum.conf
    regexp: '(^(\s+)timeout=)(.*)$'
    replace: 'timeout=300'
    backup: no
- name: "Dans /etc/yum.conf création de la ligne timeout=300"
  lineinfile:
    path: /etc/yum.conf
    line: 'timeout=300'
    state: present
    backup: no
Lien vers le fichier : cliquez ici Copier le code

On regarde si le mot 'ansible' existe dans une ligne, si ce n'est pas le cas on l'ajoute.
En fait le premier bloc sert à faire un test de remplacement du mot 'ansible'.
On stock le résultat dans une variable.
Si cette variable a pour résultat 'changed', c'est que mon mot 'ansible' à ajouter existait déjà.
Donc on ne joue le bloc d'ajout que si 'changed' et faux.

- name: Check authorisation on sshd
  replace:
    path: /etc/ssh/sshd_config
    regexp: '^\s*AllowGroups(\s+)(.*)ansible(.*)?$'
    replace: 'test'
  check_mode: yes
  register: result
- name: Set authorisation on sshd add group
  lineinfile:
    path: /etc/ssh/sshd_config
    backrefs: true
    regexp: '^\s*AllowGroups\s+(.*?)(\s+a)*$'
    line: 'AllowGroups \1 ansible'
  when: result['changed'] == False
Lien vers le fichier : cliquez ici Copier le code

Changer les droits et le propriétaire d'un répertoire

- name: "Change ownership on /var/log/nrpe/centplugins/"
  ansible.builtin.file:
    path: /var/log/nrpe/centplugins
    owner: centreon-engine
    group: centreon-engine
    mode: '0755'
Lien vers le fichier : cliquez ici Copier le code

Création d'un utilisateur et de son groupe

- name: Creation groupe monuser
  ansible.builtin.group:
    name: monuser
    state: present
    system: true

- name: Creation du compte monuser
  ansible.builtin.user:
    name: monuser
    groups: monuser
    shell: /bin/bash
    system: false
    group: monuser
    state: present
Lien vers le fichier : cliquez ici Copier le code

En option on peut coller une clé publique en autorisation/accès sur ce compte.
Ici la clé publique est copiée depuis
~/vault/id_rsa_monuser_proxy.pub

- name: Copy monuser authorized key
  ansible.posix.authorized_key:
    user: monuser
    state: present
    key: "{{ lookup('file', '~/vault/id_rsa_monuser_proxy.pub') }}"
Lien vers le fichier : cliquez ici Copier le code

Activer un service

- name: "Enabled snmpd"
  ansible.builtin.service:
    name: snmpd
    enabled: true
Lien vers le fichier : cliquez ici Copier le code

A priori l'activation peut être buggée ( https://github.com/ansible/ansible/issues/72451 ), en contournement on peut faire

- name: Really enable snmpd
  shell:
  cmd: "systemctl enable snmpd.service"
Lien vers le fichier : cliquez ici Copier le code

Désactiver un service

- name: "Disable snmpd"
  ansible.builtin.service:
    name: snmpd
    enabled: false
Lien vers le fichier : cliquez ici Copier le code

Relance d'un service, ici sshd

- name: "Restart service sshd"
  ansible.builtin.service:
    name: sshd
    state: restarted
Lien vers le fichier : cliquez ici Copier le code

Créer une variable dont une partie contient le nom de la machine traitée

---
 - name: Ajout groupe à sudo
   hosts: mesmachines
   become: yes
   become_method: sudo

   tasks:
    - name: Créer la variable
      set_fact:
        nom_groupe: "GRP_SSH_{{ inventory_hostname }}"

    #Gestion de l'accès root
    - name: "Create file /etc/sudoers.d/admins"
      ansible.builtin.file:
        path: /etc/sudoers.d/admins
        owner: root
        group: root
        mode: '0640'
        state: touch

    - name: "Pour sudo ajout des droits du groupe AD {{ nom_groupe }}"
      lineinfile:
        path: /etc/sudoers.d/admins
        line: "%{{ nom_groupe }}     ALL=(ALL)   ALL"
        state: present
        backup: no
Lien vers le fichier : cliquez ici Copier le code

Import d'une clé pgp

- name: Import clé pgp
  ansible.builtin.shell: apt-key add /home/ansible/atix_gpg.pub
Lien vers le fichier : cliquez ici Copier le code

Installation d'un logiciel avec apt

- name: Install python3-subscription-manager
  ansible.builtin.apt:
    name: python3-subscription-manager
    state: present
Lien vers le fichier : cliquez ici Copier le code

Continuer même si une tâche échoue

- name: Install SentinelOne .rpm package
  ansible.builtin.shell: rpm -vih /tmp/SentinelAgent_linux_x86_64_v23_2_2_4.rpm --nodigest --nofiledigest
  args:
    executable: /bin/bash
  ignore_errors: True
Lien vers le fichier : cliquez ici Copier le code

Exécuter une commande shell : exemple

- name: Launch sentinelone
  ansible.builtin.shell: /opt/sentinelone/bin/sentinelctl control start
Lien vers le fichier : cliquez ici Copier le code

2