Outils pour utilisateurs

Outils du site


tech:notes_ansible_-_validate_-_file_name_extension

Ceci est une ancienne révision du document !


Notes Ansible - Validate - file name extension

Le “validate” d'Ansible ne fonctionne pas si la commande de validation est tributaire de l’extension (la fin du nom de fichier après le point communément de 3 ou 4 caractères).

En effet le fichier poussé par Ansible n'est pas tout de suite nommé de son nom définitif.

La solution est de créer un script “wraper” pour envelopper la commande de validation. Il se chargera de le nommer comme il se doit avant.

Voici un exemple avec une validation d'un fichier Unit de SystemD.

files/wrapper_systemd-analyze_verify.sh
#! /bin/bash
 
# Wrapper for Ansible M(template) A(validate)
# Because 'systemd-analyze verify' work only when file is named with correct extention like .service .socket or .timer
# Used by R(CDO_SET_SERVICE_FILE)
 
FICNAME="$1"
 
get_type() {
        if [[ "$(cat $FICNAME)" =~ '[Service]' ]]
        then
                echo '.service'
        elif [[ "$(cat $FICNAME)" =~ '[Socket]' ]]
        then
                echo '.socket'
        elif [[ "$(cat $FICNAME)" =~ '[Timer]' ]]
        then
                echo '.timer'
        else
                echo "ERROR getting type"
                exit 3
        fi
}
 
NEW_FICNAME="$(basename $FICNAME)$(get_type)"
 
ln -fs "$FICNAME" "$NEW_FICNAME"
 
systemd-analyze verify "$NEW_FICNAME"
RET=$?
unlink "$NEW_FICNAME"
 
exit $RET
- name: hack - wrapper to systemd-analyze_verify for validate
  become: true
  become_user: "{{ becomeuser }}"
  when: unit_file_comp.changed
  block:
    - name: make dir into .ansible/tmp-files/
      file: path="{{ homedir }}/.ansible/tmp-files/" state=directory recurse=true

    - name: copy script for validate wrapper_systemd-analyze_verify.sh
      copy:
        src: wrapper_systemd-analyze_verify.sh
        dest: "{{ homedir }}/.ansible/tmp-files/"
        mode: 0755

    - name: template systemd unit file
      template:
        src: systemd-unit.j2
        dest: "{{ systemd_file_path }}"
        validate: "{{ homedir }}/.ansible/tmp-files/wrapper_systemd-analyze_verify.sh %s"
tech/notes_ansible_-_validate_-_file_name_extension.1742825205.txt.gz · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki