Je suis un débutant en Ansible. J'essayais d'utiliser expect avec Ansible pour automatiser l'installation de packages (désinstallation dans l'exemple ci-dessous). Lors de la désinstallation manuelle du package lynx, j'obtiens le prompt suivant. Dans le champ de réponse d'expect - j'essayais de faire correspondre ce motif (les deux lignes) mais mon script échoue. Bien que cela fonctionne pour une ligne - Est-ce que c'est ok [y/N] : y. L'expression régulière que j'ai utilisée pour les deux lignes est Installed size: 5.4 M\nIs this ok [y/N]: y
-----------------------
Installed size: 5.4 M
Is this ok [y/N]:
----------------------
Code 1 (correspondance de motif pour les deux lignes - échec) :
[ansible@localhost ansible]$ cat main.yml
---
- hosts: localhost
remote_user: ansible
become: yes
become_method: sudo
connection: ssh
gather_facts: yes
tasks:
- name: remove a package
expect:
command: yum remove lynx
responses:
Installed size: 5.4 M\nIs this ok \[y\/N\]: y
#Is this ok \[y\/N\]: y
echo: yes
Output:
[ansible@localhost ansible]$ ansible-playbook main.yml
[DEPRECATION WARNING]: DEFAULT_SUDO_USER option, In favor of become which is a generic framework . This feature will be removed in version 2.8. Dépréciation
les avertissements peuvent être désactivés en définissant deprecation_warnings=False dans ansible.cfg.
ERREUR! Erreur de syntaxe lors du chargement de YAML.
L'erreur semble être dans '/etc/ansible/main.yml' : ligne 13, colonne 51, mais le problème de syntaxe exact peut être
ailleurs dans le fichier en fonction du problème de syntaxe exact.
La ligne offensante semble être :
responses:
Installed size: 5.4 M\nIs this ok \[y\/N\]: y
^ ici
type d'exception:
exception: les valeurs de mappage ne sont pas autorisées dans ce contexte
in "", ligne 13, colonne 51
[ansible@localhost ansible]$
\======================================================================= Code 2 (correspondance de motif pour une seule ligne - fonctionne bien):
[ansible@localhost ansible]$ cat main.yml
---
- hosts: localhost
remote_user: ansible
become: yes
become_method: sudo
connection: ssh
gather_facts: yes
tasks:
- name: remove a package
expect:
command: yum remove lynx
responses:
#Installed size: 5.4 M\nIs this ok \[y\/N\]: y
Is this ok \[y\/N\]: y
echo: yes
Sortie :
[ansible@localhost ansible]$
[ansible@localhost ansible]$ ansible-playbook main.yml
[DEPRECATION WARNING]: DEFAULT_SUDO_USER option, In favor of become which is a generic framework . This feature will be removed in version 2.8. Dépréciation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
PLAY [localhost] *********************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [127.0.0.1]
TASK [remove a package] **************************************************************************************************************************************
changed: [127.0.0.1]
PLAY RECAP ***************************************************************************************************************************************************
127.0.0.1 : ok=2 changed=1 unreachable=0 failed=0