web-dev-qa-db-ja.com

AnsibleのインストールPythonパッケージ

Ansible PythonパッケージをWindows 10マシンにインストールするのに苦労しています。

私のマシンでAnsibleを実行する必要はありません。これは純粋にWindowsホストでの開発目的のためです。すべてのコマンドは、後でLinuxマシンで発行されます。

実行後:

pip install ansible

次の例外が発生します。

コマンド "c:\ users\evaldas.buinauskas\appdata\local\programs\python\python37-32\python.exe -u -c" import setuptools、tokenize; __ file __ = 'C:\ Users\evaldas.buinauskas\AppData\Local\Temp\pip-install-hpay_le9\ansible\setup.py '; f = getattr(tokenize、' open '、open)(__ file __); 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 "は、C:\ Users\evaldas.buinauskas\AppData\Local\Temp\pip-install-hpay_le9\ansible \のエラーコード1で失敗しました

また、根本的な原因だと思う反復的な例外もあります。

エラー: 'lib\ansible\module_utils\ansible_release.py'をコピーできません:存在しないか、通常のファイルではありません

このGitHubの問題 は、実行ではなく、インストールが可能であるべきだと述べています。基本的に私が本当に必要なのはこれだけです。

CMD/PowerShell/Cygwinを管理者として実行しようとしましたが、助けにはなりませんでした。

また、Windowsにインストールする方法を示す答えがあります: 克服する方法-Windowsでファイル名または拡張子が長すぎるために失敗するpipインストールansible

しかし、Ansibleパッケージ用のホイールファイルを取得する方法を本当に理解していません。

16

WindowsにAnsibleをインストールするのは面倒です。私のアドバイスは、WindowsにAnsibleをインストールする方法に関する直接的な解決策ではなく、回避策です。

Windowsマシンでプレイブックを開発するには、AnsibleでDockerコンテナーを使用します。あなたのマシンには Windows用Docker が必要です。

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"]

docker buildコマンドを使用してdockerコンテナーを構築します。その後、docker runコマンドを実行し、現在のディレクトリをコンテナにマウントする小さなbashスクリプトを作成できます。 ansible-playbook.shと呼ぶことができます:

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

GIT BASH./ansible-playbook.sh <your playbook>を使用してAnsibleプレイブックを起動できるようになります。 PowerShellでこれを実行する場合は、おそらくwinptyコマンドを削除する必要がありますが、PSではまだテストしていません。

これは最高のソリューションではありませんが、作業は完了します。それもあなたのお役に立てば幸いです。

9
fgk

次の手順でWindows 10にansibleをインストールできました(powershell)で実行しました:

  • Ansibleリポジトリのクローン作成、例: ansibleフォルダー
  • pip3 install-e。\ ansible \

New-Item -ItemType SymbolicLink -Name ansible_release.py -Target。\ lib\ansible\release.py-のようなシンボリックリンクを作成する必要があるかもしれません必要だと思う。

Ansibleは、grppwdなどの一部のUNIX専用モジュールを使用しているため、開発にはまだ使用できません。たとえば、単体テストを実行することはできません(たとえばmodule_utils/basic.pyimports grp and pwd)。 grp.pyをsite-packagesフォルダーにダウンロードしても役に立ちません。

WSL(Linux用Windowsサブシステム)をインストールすることと、pythonをpipでインストールして、pip install ansible)をインストールすることをお勧めします。 Visual Studio Codeでの開発: https://daverupert.com/2018/04/developing-on-windows-with-wsl-and-visual-studio-code/

4
Kasia Gauza

別のアプローチは、Ubuntu 18.04アプリ、または障害が発生した場合は最新のものをストアからインストールし、Linuxの方法ですべてを実行することです。

もちろん、ansibleを使用してコントローラーマシンにコマンドを送信する必要がある場合は、とにかくいくつかのトリックを実行できます

2
realtebo