私は分子とtestinfraを使っていくつかのAnsibleの役割をテストしています。デバッグモードでテストを実行した後、readlink -f '/sbin/init'
systemdがシンボリックリンクされていることを確認するために呼び出しを試みることがわかります。リモートコマンドは次のとおりです。
ssh -o UserKnownHostsFile=/dev/null -o ControlMaster=auto -o ControlPersist=60s -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o User=myuser -o Port=22 -i /Users/myuser/.cache/molecule/jenkins-config/default/ssh_key -o ConnectTimeout=10 99.999.9.999 \'sudo /bin/sh -c \'"\'"\'readlink -f /sbin/init\'"\'"\'\''
Ansibleホストでこのコマンドを非常に詳細に実行すると、現在のテストが失敗した理由が表示されます。
bash: sudo /bin/sh -c 'readlink -f /sbin/init': No such file or directory
ただし、このコマンドをansibleターゲットでローカルに実行する場合。
$ sudo /bin/sh -c 'readlink -f /sbin/init'
/usr/lib/systemd/systemd
正しい出力を表示します。
リモートセッションでこれが失敗する理由がわかりませんが、この問題を解決するのに役立つ追加情報を取得する方法もわかりません。
答え1
あなたの通貨で過度に複雑な引用を使用しているようです。この行の仕組み:
ssh <your-options> <target-host> "sudo /bin/sh -c 'readlink -f /sbin/init'"
(パスワードが必要な場合は、-S
sudoオプションを使用するとパスワード入力が表示されます。)
答え2
リモートシステムでは、このコマンドを使用またはsudo
実行する必要はありません。bash
ただ
ssh <options> <user@hostname> readlink -f /sbin/init
それだけで十分です。