J'essaie d'exécuter des commnads ansible2 ...
Quand je fais:
ansible-playbook -vvv -i my/inventory my/playbook.yml
Je reçois:
Exception inattendue: le nom 'basestring' n'est pas défini, la trace complète était:
Traceback (most recent call last): File "/usr/local/bin/ansible-playbook", line 85, in <module> sys.exit(cli.run()) File "/usr/local/lib/python3.4/site-packages/ansible/cli/playbook.py", line 150, in run results = pbex.run() File "/usr/local/lib/python3.4/site-packages/ansible/executor/playbook_executor.py", line 87, in run self._tqm.load_callbacks() File "/usr/local/lib/python3.4/site-packages/ansible/executor/task_queue_manager.py", line 149, in load_callbacks Elif isinstance(self._stdout_callback, basestring): NameError: name 'basestring' is not defined
Voici ansible --version
:
ansible 2.0.0.2
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
Et voici python --version
Python 3.4.3
La version 2.5 ci-dessous nécessite la version Python 2.6 ou 2.7 sur l'hôte de contrôle: Control Node Configuration requise )
basestring
n’est plus disponible dans Python 3. De Quoi de neuf dans Python 3. ) ==:
Le type abstrait
basestring
abstrait a été supprimé. Utilisezstr
à la place. Les typesstr
etbytes
n'ont pas assez de fonctionnalités en commun pour garantir une classe de base partagée. Le2to3
tool (voir ci-dessous) remplace chaque occurrence debasestring
parstr
.
basestring n'est pas disponible dans Python 3 .:
Cela peut être corrigé pour python 2.x et 3.x avec les éléments suivants:
try:
basestring
except NameError:
basestring = str
J'ai rencontré ce problème en utilisant Python 3 avec Ansible et résolu en forçant le projet dopy et en installant dopy dans mon script ansible avec:
name: git+https://github.com/eodgooch/[email protected]#Egg=dopy
.
Si vous continuez à avoir des erreurs, assurez-vous de changer le version
en 0.4.0
et supprimez tous les paquets dopants en attente de votre répertoire Python site-packages.
Aussi, vous pourriez pip3 install git+https://github.com/eodgooch/[email protected]#Egg=dopy
au lieu de dans votre tâche Ansible.
Remplacez basestring par str. Dans 2.x basestring est là. mais dans 3.x la chaîne de base a été remplacée par "str".
Le problème peut être dû à python version. Dans 2.x, basestring existe, mais dans 3.x, il a été remplacé par "str".