0

リモートホスト「10.8.8.88」で、パラメーターとして提供されたファイル数と同じ回数だけシェルスクリプトを実行する ansible プレイブックがあります。

ansible-playbook test.yml -e files="file1,file2,file3,file4"

プレイブックは次のようになります。

- name: Call ssh
  shell: ~./execute.sh {{ item }}
  with_items: {{ files.split(',') }}

これは、10 ~ 15 個のファイルなど、より少ないファイルの場合にうまく機能します。しかし、たまたま引数に 145 個のファイルがあります。

これは、実行が中断され、再生が途中で失敗し、次のエラー メッセージが表示された場合です。

TASK [shell] *******************************************************************
 [WARNING]: conditional statements should not include jinja2 templating
delimiters such as {{ }} or {% %}. Found: entrycurrdb.stdout.find("{{ BASEPATH
}}/{{ vars[(item | splitext)[1].split('.')[1]] }}/{{ item | basename }}") == -1
and actualfile.stat.exists == True
 [WARNING]: sftp transfer mechanism failed on [10.8.8.88]. Use ANSIBLE_DEBUG=1
to see detailed information
 [WARNING]: scp transfer mechanism failed on [10.8.8.88]. Use ANSIBLE_DEBUG=1
to see detailed information
fatal: [10.8.8.88]: UNREACHABLE! => {"changed": false, "msg": "Data could not be sent to remote host \"10.8.8.88\". Make sure this host can be reached over ssh: ", "unreachable": true}

NO MORE HOSTS LEFT *************************************************************

PLAY RECAP *********************************************************************
10.8.8.88                 : ok=941  changed=220  unreachable=1    failed=0    skipped=145  rescued=0    ignored=0   
localhost                  : ok=7    changed=3    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0   

Build step 'Execute shell' marked build as failure
Finished: FAILURE

私は最新の Ansible を使用しており、ansible.cfg の「パイプライン」と「ssh」の設定がデフォルトになっています。

次の質問があります。

  1. 上記の問題を解決するにはどうすればよいですか?

  2. これは、ネットワークの問題が原因である可能性があると思います。ansible コマンドラインが壊れるかどうかを確認するために、テスト目的でリモート サーバーに対して無限の ssh ping を実行することは可能ですか? それは私の主張を証明するのに役立ちます。私が探しているのは、ssh を使用してリモートに ping を実行し続けるサンプル コマンドです。

  3. このような障害が発生した場合、再試行中に接続できるように、ssh 接続を数回再試行するように ansible を強制することができます。もしそうなら、ansible.cfg ファイルではなく、vars 変数として ansible-playbook コードのどこでどのように設定できるかを教えていただければ幸いです。 https://docs.ansible.com/ansible/2.4/intro_configuration.html#retries

次のようなもの:

   vars:
    ansible_ssh_private_key_file: "{{ key1 }}"

どうもありがとう !!

4

0 に答える 0