2017-12-19 16 views
-1

私はCapistranoからWebアプリケーションを配備するためにAnipalに移行しています。私はほぼすべてのレシピを移行することができましたが、私は1つに固執しています。どのように私はsshシェルをリモートのAnsibleと開くことができますか?

cap production sshにヒットしたリモートサーバーにすばやくアクセスするには、このコマンドでステージ構成のローカルsshコマンドを実行します。そうすれば、チーム内の誰でも、必要なユーザー名とホスト名を見つけることなく、リモートサーバーにすばやくアクセスできます。

私はAnsibleで同じことをしようとしていますが、それは可能であるかどうかもわかりません。私が今までに得たのは、このエラーです。Pseudo-terminal will not be allocated because stdin is not a terminal.

私が使用する無能な仕事は次のとおりです。

- name: SSH to host 
    hosts: app 
    gather_facts: no 
    tasks: 
    - command: ssh {{ ansible_user }}@{{ inventory_hostname }} 
     delegate_to: localhost 

任意のアイデア?

+2

あなたがしようとしていることを明確にしてください。 実行するタスクがないプレイブックからsshを実行するコマンドを使用する理由は何ですか? –

+0

私は、可能な在庫情報を使ってリモートシェルを開くコマンドが必要です。 私はそれがアナーシーがやろうとしていることではないことを知っています。カピストラーノがやらなければならないものではありません。 – Erwan

答えて

0

これは確かに不可能です。
プレイブックとの対話型SSH接続を開くことはできません。私は(何も指定されたポートが存在しないときにケースを処理する方法を見つけてみましょう

eval $(ansible-inventory --inventory ${INVENTORY_FILE_PATH} --host ${INVENTORY_HOSTNAME} | jq -r '"ssh -p " + (.ansible_port|tostring) + " " + .ansible_user + "@" + .ansible_host') 

あなたの必要性への可能な解決策は、そのようなものでansible-inventoryを使用して、インベントリからのSSHの情報を抽出することですしたがって、ポート22にフォールバックするか、または-iオプションとともに使用するansible_ssh_private_key_fileがある場合)。

関連する問題