Raspberry Pi 3上のFreeBSDの管理(RaspBSDプロジェクトのFreeBSD-aarch64-12.0-GENERIC-320146M- http://www.raspbsd.org/ )は失敗します。
コントロールホストはMacOS10.13.2です。
pythonが管理対象ホストに正常にインストールされました(rpi3_freebsd):
$ ansible -m raw -a "Sudo pkg install -y python27" --user drew --ask-pass rpi3_freebsd
SSH password:
rpi | SUCCESS | rc=0 >>
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The most recent version of packages are already installed
ただし、プレイブックを実行しようとすると、ansibleは次のエラーを返します。
$ ansible-playbook --user drew --ask-pass bootstrap.yml -vvvv
ansible-playbook 2.4.3.0
config file = /Users/drew/SynologyDrive/rpi-scripts/ansible/ansible.cfg
configured module search path = [u'/Users/drew/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/Cellar/ansible/2.4.3.0/libexec/lib/python2.7/site-packages/ansible
executable location = /usr/local/bin/ansible-playbook
python version = 2.7.10 (default, Jul 15 2017, 17:16:57) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
Using /Users/drew/SynologyDrive/rpi-scripts/ansible/ansible.cfg as config file
SSH password:
setting up inventory plugins
Parsed /Users/drew/SynologyDrive/rpi-scripts/ansible/hosts inventory source with ini plugin
Loading callback plugin skippy of type stdout, v2.0 from /usr/local/Cellar/ansible/2.4.3.0/libexec/lib/python2.7/site-packages/ansible/plugins/callback/skippy.pyc
PLAYBOOK: bootstrap.yml ******************************************************************************************************************
1 plays in bootstrap.yml
PLAY [raspberrypi_3] *********************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************
Using module file /usr/local/Cellar/ansible/2.4.3.0/libexec/lib/python2.7/site-packages/ansible/modules/system/setup.py
<172.16.42.6> ESTABLISH CONNECTION FOR USER: drew on PORT 22 TO 172.16.42.6
<172.16.42.6> EXEC /bin/sh -c 'echo ~ && sleep 0'
<172.16.42.6> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058 `" && echo ansible-tmp-1522353818.07-1230475463058="` echo /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058 `" ) && sleep 0'
<172.16.42.6> PUT /var/folders/2c/m_z3y5gs3fz1m2b2lwzk7yl80000gn/T/tmpgWCvx_ TO /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/setup.py
<172.16.42.6> EXEC /bin/sh -c 'chmod u+x /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/ /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/setup.py && sleep 0'
<172.16.42.6> EXEC /bin/sh -c '/usr/local/bin/python /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/setup.py; rm -rf "/home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/" > /dev/null 2>&1 && sleep 0'
fatal: [rpi]: FAILED! => {
"changed": false,
"module_stderr": "",
"module_stdout": "Shared object \"libdl.so.1\" not found, required by \"python\"\r\n",
"msg": "MODULE FAILURE",
"rc": 0
}
to retry, use: --limit @/Users/drew/SynologyDrive/rpi-scripts/ansible/bootstrap.retry
PLAY RECAP *******************************************************************************************************************************
rpi : ok=0 changed=0 unreachable=0 failed=1
Ansibleの唯一の依存関係はpythonですが、これは満たされています。
何が問題で、どうすれば修正できますか?
ありがとうございました。
リンクを作成することで、bashとwgetに依存関係がないという同様の問題が修正されました
ln -sf /lib/libc.so.7 /usr/lib/libdl.so.1
FreeBSD 11.1から11.2に移行するときに同様の問題が発生しましたが、libdl.so.1
がないという問題を報告したのはgnutls
でした。
私の解決策は、私が見つけたヒントから生まれました:
最初に/etc/pkg/FreeBSD.conf
のバックアップを作成します。
# cp -vp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.safety
次に、/etc/pkg/FreeBSD.conf
を編集し、url:
行を次のように変更します。
url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_2",
ファイルを保存してviを終了します。
# pkg update
# pkg install -f python27
次に、AnsiblePlaybookをもう一度試してください。
それが機能する場合、および最近他のポートをアップグレードした場合は、同様の問題が発生しないように、大まかな呼び出しを行うことをお勧めします。
私は専門家ではありませんが、OSを最新バージョンにすると、この問題は解消されると思います。私の場合、この問題は、pkgリポジトリがlibdl.so.1を持つ11.2にリンクされたパッケージを提供していて、バージョン11.1がまだないjailにそれらをインストールしていたために発生したと思います。
最新のリリースにアップグレードしたら、/etc/pkg/FreeBSD.conf
を作成したバックアップコピーに戻し、最新のpkgリポジトリの追跡を再開する必要があります。