web-dev-qa-db-ja.com

Ansibleにはpython-aptが必要ですが、すでにインストールされています

プロローグ:ansibleで最初のstespを移動しているだけなので、しばらくお待ちください

また、私は答えを 'MySQL-pythonがすでにインストールされているにもかかわらず、AnsibleがMySQL-pythonをインストールすることを要求します' を読んでいます。この質問のおかげで、私の問題はリモート制御されたマシンにあることがわかりました。 私の質問は同じですが、リンクされた質問には私の問題を解決するための回答が含まれていません

コマンドラインからansibleをテストしています。たとえば、正常にpingできます

~/.ssh$ ansible openvpn -C -m "ping"
192.168.1.225 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

apt updateを起動しようとしました。

これがapt-get updateに相当する正しい構文かどうかはわかりませんが、これは問題ではありません

私は-Cを使用して、予行演習を依頼したときにansibleが私に言っていることを確認しています。

$ ansible openvpn -C -m "apt update-cache=yes"
192.168.1.225 | FAILED! => {
    "changed": false,
    "msg": "python-apt must be installed to use check mode. If run normally this module can auto-install it."
}

[〜#〜] edit [〜#〜]:@Davide Mazeが示唆したように、python-aptが欠落していることが原因である可能性があります。確認しましたが、python-aptがあります

$ python -V
Python 2.7.15rc1

$ pip list
... cut ...
python-apt (1.6.2)
... cut ...

$ which python
/usr/bin/python

私の質問は:なぜansibleはpython-aptがインストールされていないことを教えてくれますか、そしてこれを修正する方法を教えてください

7
realtebo

正しい方向を示してくれた@David Mazeに感謝

controllerマシンではなく、-controllerマシンで_python-apt_をチェックしていました。

だから私はパッケージをコントローラからコントローラマシンにインストールしました

_$ ansible openvpn -m "apt name=python-apt state=latest" --become-user realtebo
_

_Sudo apt-get update_を実行し、オペレーターがパスワードを入力するのを待つ次の形式も使用できます。ユーザーは、ssh経由でログインしたユーザーです。設定を確認してください。私の場合、私はsshキーを使用しています。パスワードログインはまったく無効になっています。

_$ ansible openvpn -m apt -a "update-cache=yes" --become --ask-become-pass
_

ヒント1:この相互作用を回避するためにVaultを利用できますが、まだ試していません。

ヒント2:また、_--ask-become-pass_は、おそらく探しているドキュメントのaにありません。これは、オプションが大文字で_-K_に短縮されているためです。下を見ます ドキュメントを参照してください

_python-apt_がリモートで利用できるようになったため、パッケージ_-C_がリモートで利用できることを確認した後、_python-apt_オプションが機能し始めました。

_ansible openvpn -C -m "apt name=python state=latest"

192.168.1.225 | SUCCESS => {
    "cache_update_time": 1533077635,
    "cache_updated": false,
    "changed": false
}
_
3
realtebo