{{tag>Brouillon Script Ansible CA}}
= Script shell commande timeout
Voir aussi :
* waitmax https://manpages.debian.org/testing/check-mk-agent/waitmax.1.en.html
** A titre d'exemple**. Idéalement il faut gérer le timeout avec **Ansible**
Exemple de code Ansible
- name: command ldap_search
become: true
ansible.builtin.command: |
/usr/bin/timeout --kill-after=15 10 /usr/bin/ldapsearch -LLL -D cn={{ lookup('env', 'LDAP_USER') }} -b o=unixauth -y /root/.ansible/tmp-files/.ldap.txt uid={{ CDO_ACCOUNT_USER | quote }} dn
changed_when: false
check_mode: false
register: ldapsearch
environment:
LANG: C
failed_when:
- ldapsearch.rc != 0 # OK
- ldapsearch.rc != 124 # Timeout. SIGTERM
- ldapsearch.rc != 137 # Timeout. SIGKILL
- name: fail when timeout - SIGTERM
fail:
msg: "Error_Command_Timeout. Process arrêté par SIGTERM."
when: ldapsearch.rc == 124
- name: fail when timeout - SIGKILL
fail:
msg: "Error_Command_Timeout. Process arrêté par SIGKILL."
when: ldapsearch.rc == 137
- name: fail if ACME user
fail:
msg: |
Error_ElementAlreadyUsed. Nom de compte utilisateur déjà utilisé par ACME {{ CDO_ACCOUNT_USER }}.
when:
- ldapsearch.stdout_lines |select('regex', '^dn:') |list is regex(',o=unixauth')
- not allow_ldap_acme
Concernant Ansible voir aussi https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_async.html
== async pool timeout
''play1.yml''
#!/usr/bin/ansible-playbook
---
- name: test
hosts: localhost
gather_facts: false
# TIMEOUT_MAX = async # when poll != 0
# TIMEOUT_MAX = retries x delay # when poll == 0
tasks:
- name: Command
shell: |
sleep 5
date >> /tmp/date.log
poll: 0 # When pool is a positive value, the playbook will still block on the task until it either completes, fails or timeout
async: 2 # if poll != 0 : fail when task is longer than async value
register: cmd_sleep
- name: DEBUG 10
debug:
msg: "Command en cours d'execution"
- name: Async_status
async_status:
jid: "{{ cmd_sleep.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 3 # MAX TIMEOUT VAR
delay: 2 # MAX TIMEOUT VAR
- name: DEBUG 20
debug:
msg: "Execution terminée"