web-dev-qa-db-fra.com

Installation du package Ansible Python sous Windows

J'ai du mal à installer le package Ansible Python sur mon ordinateur Windows 10.

Je n'ai pas besoin d'Ansible pour fonctionner sur ma machine, c'est uniquement à des fins de développement sur mon hôte Windows. Toutes les commandes seront ensuite émises sur une machine Linux.

Après avoir couru:

pip install ansible

Je reçois l'exception suivante:

Commande "c:\utilisateurs\evaldas.buinauskas\appdata\programmes\python\python37-32\python.exe -u -c" importer setuptools, tokenize; __ fichier __ = 'C:\Utilisateurs\evaldas.buinauskas\AppData\Local\Temp\pip-install-hpay_le9\ansible\setup.py '; f = getattr (tokenize,' open ', open) (fichier __), code = f.read (). Replace ('\r\n ', '\ n'); f.close (); exec (compile (code, __file__, 'exec')) "install --record C:\Users\evaldas.buinauskas\AppData\Local\Temp\pip-record-dvfgngpp\install-record.txt --single-version-externally-managed -compile "a échoué avec le code d'erreur 1 dans C:\Users\evaldas.buinauskas\AppData\Local\Temp\pip-install-hpay_le9\ansible \

Il y a aussi une exception répétitive dont je pense être la cause fondamentale:

erreur: impossible de copier 'lib\ansible\module_utils\ansible_release.py': n'existe pas ou n'est pas un fichier normal

Ce problème GitHub dit que l'installation devrait être possible, pas en cours d'exécution. C'est fondamentalement tout ce dont j'ai vraiment besoin.

J'ai essayé d'exécuter CMD/PowerShell/Cygwin en tant qu'administrateur, mais cela n'a pas aidé. 

En outre, il existe une réponse qui explique comment l’installer sur Windows: Comment surmonter - installer pip sur une fenêtre Windows avec le nom de fichier ou l’extension trop long sur Windows

Mais je ne comprends pas vraiment comment obtenir un fichier wheel pour le paquet Ansible.

7
Evaldas Buinauskas

L'installation d'Ansible sous Windows est fastidieuse. Mon conseil n’est pas une solution directe sur la façon d’installer Ansible sous Windows, mais plutôt une solution de contournement.

J'utilise un conteneur Docker avec Ansible pour développer des livres de lecture sur ma machine Windows. Vous aurez besoin de Docker pour Windows sur votre ordinateur. 

Voici le fichier Dockerfile:

FROM Alpine:3.7

ENV ANSIBLE_VERSION=2.5.4

ENV BUILD_PACKAGES \
        bash \
        curl \
        tar \
        nano \
        openssh-client \
        sshpass \
        git \
        python \
        py-boto \
        py-dateutil \
        py-httplib2 \
        py-jinja2 \
        py-paramiko \
        py-pip \
        py-setuptools \
        py-yaml \
        ca-certificates

RUN apk --update add --virtual build-dependencies \
        gcc \
        musl-dev \
        libffi-dev \
        openssl-dev \
        python-dev && \
    set -x && \
    apk update && apk upgrade && \
    apk add --no-cache ${BUILD_PACKAGES} && \
    pip install --upgrade pip && \
    pip install python-keyczar docker-py boto3 botocore && \
    apk del build-dependencies && \
    rm -rf /var/cache/apk/* && \
    mkdir -p /etc/ansible/ /ansible && \
    echo "[local]" >> /etc/ansible/hosts && \
    echo "localhost" >> /etc/ansible/hosts && \
    curl -fsSL https://releases.ansible.com/ansible/ansible-${ANSIBLE_VERSION}.tar.gz -o ansible.tar.gz && \
    tar -xzf ansible.tar.gz -C /ansible --strip-components 1 && \
    rm -fr ansible.tar.gz /ansible/docs /ansible/examples /ansible/packaging

ENV ANSIBLE_GATHERING=smart \
    ANSIBLE_Host_KEY_CHECKING=false \
    ANSIBLE_RETRY_FILES_ENABLED=false \
    ANSIBLE_ROLES_PATH=/ansible/playbooks/roles \
    ANSIBLE_SSH_PIPELINING=True \
    PYTHONPATH=/ansible/lib \
    PATH=/ansible/bin:$PATH \
    ANSIBLE_LIBRARY=/ansible/library \
    EDITOR=nano

WORKDIR /ansible/playbooks

ENTRYPOINT ["ansible-playbook"]

Générez le conteneur Docker avec la commande docker build. Ensuite, vous pouvez créer un petit script bash qui exécute la commande docker run et monte votre répertoire actuel dans le conteneur. Vous pouvez l'appeler ansible-playbook.sh:

winpty docker run --rm -it -v /$(pwd):/ansible/playbooks <name of your container> $@

Maintenant, vous pourrez lancer Ansible playbook avec ./ansible-playbook.sh <your playbook> dans GIT BASH . Si vous souhaitez exécuter ceci dans PowerShell, vous devrez probablement supprimer la commande winpty, mais je ne l'ai pas encore testé dans PS.

Ce n'est pas la meilleure solution, mais le travail est fait. J'espère que cela vous aidera aussi.

5
fgk

Une autre approche consiste à installer depuis le magasin l'application Ubuntu 18.04, ou la plus récente si disponible, puis à effectuer toutes les opérations sous Linux.

Bien sûr, cela vous amènera quand même à faire quelques astuces si vous devez utiliser ansible pour commander la machine contrôleur.

2
realtebo

J'ai réussi à installer ansible sous Windows 10 en procédant comme suit (exécuté dans powershell):

  • Cloner le référentiel ansible, par exemple vers le dossier ansible
  • pip3 installer -e.\ansible \

Vous devrez peut-être aussi créer un lien symbolique, comme New-Item -ItemType SymbolicLink - Name ansible_release.py -Target.\Lib\ansible\release.py, mais cela ne devrait pas être nécessaire, je pense. .

L'ansible sera toujours en quelque sorte inutilisable pour le développement, car il utilise des modules uniquement sous Unix tels que grp ou pwd, vous ne pourrez par exemple pas exécuter de tests unitaires (par exemple module_utils/basic.py importations grp et pwd). Télécharger grp.py dans le dossier site-packages _ ne vous aidera pas. 

Je recommande d'installer WSL (Windows Subsystem for Linux) en plus d'installer python avec pip et d'exécuter simplement pip install ansible. Voici comment utiliser WSL pour le développement dans Visual Studio Code: https://daverupert.com/2018/04/developing-on-windows-with-wsl-and-visual-studio-code/

2
Kasia Gauza