首页 > 解决方案 > Docker Playbook yml - SSH 到具有不同端口的主机

问题描述

我有一个 Docker 容器的部署脚本。

- hosts: "{{ HOSTS|default('...') }}"
  remote_user: "{{ USER|default('root') }}"
  vars:
    deploy_port: "{{ DEPLOY_PORT|default(80) }}"
    git_branch: "{{ GIT_BRANCH|default('development') }}"
    python_settings: "{{ PYTHON_SETTINGS|default('development') }}"
  tasks:
  - name: Log into Docker registry
    docker_login:
      registry_url: ...
      username: ...
      password: ...
  ....

因此,首先我使用用户 USER 对主机进行 SSH。但是现在,我的主机具有不同的 ssh 端口(不是 22)。我该如何设置?

我尝试使用端口,但它没有用

- hosts: "{{ HOSTS|default('...') }}"
  port: 23
  remote_user: "{{ USER|default('root') }}"
  vars:
    deploy_port: "{{ DEPLOY_PORT|default(80) }}"
    git_branch: "{{ GIT_BRANCH|default('development') }}"
    python_settings: "{{ PYTHON_SETTINGS|default('development') }}"
  tasks:
  - name: Log into Docker registry
    docker_login:
      registry_url: ...
      username: ...
      password: ...
  ....

标签: sshansible

解决方案


这是您应该在清单中为没有默认端口的主机设置的 var。它的名字是ansible_port(而不是port你试过的)。

非常基本:

  • 创建一个host_vars文件夹(与您的剧本相同级别或与您的库存文件相同级别)
  • 对于每台具有不同端口 22 的机器,创建一个包含以下内容的<name_of_host>.yml文件host_vars(将 XX 替换为您的实际端口):
    ---
    ansible_port: XX
    

一些参考文档:


推荐阅读