同期モジュールを使用して、ファイルをAnsibleノードからリモートノードにコピーしようとしています。同期モジュールが失敗するとエラーが発生します
リモートノードにこれらのファイルをUserB
として存在させたいのですが、私はUserB
に直接アクセスできません。代わりにUserA
にはUserB
に切り替えるsudo特権があります。だから私はUserA
としてログインしています。
私の環境ファイルは言う:
- name: Copy and unarchive webapps node.
synchronize: src=/home/ansible/templates/app/Sprint6/webapps dest=/opt/msdp/ca/app checksum=yes
become: yes
しかし、私は脚本を実行すると、私はエラーを取得::
ansible_ssh_user=UserA
ansible_ssh_pass=<PassUserA>
ansible_become_method=sudo
ansible_become_user=UserB
ansible_become_pass=<PassUserA>
私の仕事は、あるリモートノードで
fatal: [5.232.57.247]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --checksum --archive --rsh 'ssh -S none -o StrictHostKeyChecking=no -o ControlMaster=auto -o ControlPersist=60s' --rsync-path=\"sudo rsync\" --out-format='<<CHANGED>>%i %n%L' \"/home/ansible/templates/app/Sprint6/webapps\" \"[email protected]:/opt/msdp/ca/app\"", "failed": true, "msg": "sudo: sorry, you must have a tty to run sudo\nrsync: connection unexpectedly closed (0 bytes received so far) [sender]\nrsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]\n", "rc": 12}
を、UserB
のみ書き込み可能:/opt/msdp/ca/app
設定がありませんか?ターゲット・システムの/etc/sudoers
でDefaults requiretty
ため
詳細な返信をありがとう。私はポイント2と3を完全に理解していますが、私は1を理解することに問題があります。あなたが言うことは、ssh_args = /etc/ansible/ansible.cfgを有効にすると、私はラボファイルで定義したものを使い始めるでしょうか?しかし、私はすでにターゲットノードに接続している間、これらのプロパティを使用することができます。 –
いいえ、これらのプロパティは 'synchronize'モジュールでは使用されていないため、追加パラメータ' use_ssh_args'を持っています。私は違った表現方法を知らない。 'synchronize'モジュールはローカルで実行され、他のモジュールとは異なります。リンクしたドキュメントページを確認しましたか?それは基本的に同じことを述べている。 – techraf
ありがとうtechraf!わかった。そして "ラボ"ファイルのための謝罪。私は環境ファイルを意味しました。 –