我怎么能用Ansible打开ssh shell到远程?

问题描述 投票:0回答:1

我正在从Capistrano迁移到Ansible以部署Web应用程序。我设法迁移了几乎所有的食谱,但我坚持一个。

要快速访问我们曾经访问cap production ssh的远程服务器,此命令将使用阶段配置执行本地ssh命令。这样,团队中的任何人都可以快速访问远程服务器,而无需找到所需的用户名和主机名。

我试图用Ansible做同样的事情,但我不确定它是否可能。到目前为止我得到的只是这个错误:Pseudo-terminal will not be allocated because stdin is not a terminal.

这是我使用的Ansible任务。

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

有任何想法吗 ?

ssh ansible
1个回答
0
投票

Ansible绝对是为此而设计的。 我不可能用playbook打开交互式SSH连接。

您需要的一个可能的解决方案是使用ansible-inventory从库存中提取SSH信息,如下所示:

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

我找到了一种方法来处理没有指定端口的情况(端口22的回退)或者当ansible_ssh_private_key_file-i选项一起使用时。

© www.soinside.com 2019 - 2024. All rights reserved.