Ansible自动化运维工具之个性化定制SSH连接登录端口(3)

简介: Ansible自动化运维工具之个性化定制SSH连接登录端口(3)

前言:


在日常使用Ansible自动化运维工具时,肯定都会配置管理端与被控端的无密码连接,,需要注意的是虽然ssh默认连接端口为22.但是在实际生产环境中,为了安全考虑,很有可能某些主机的ssh端口被更改了,所以就需要使用ansible_ssh_port=端口号 来指定某台主机的ssh端口或者用户名,指定之后ansible才可以正常的控制这些主机.


环境介绍:


管理主机 k8s_master1 192.168.1.18


被托管主机 k8s_node1 192.168.1.19


被托管主机 K8S_node2 192.168.1.20


操作系统 Centos 7.5


被托管主机k8s_node1配置:


1.查看被托管主机k8s_node1的ssh默认端口

[root@k8s_node1 ~]# ss -antulp |grep :22
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=886,fd=3))
tcp    LISTEN     0      128      :::22                   :::*                   users:(("sshd",pid=886,fd=4))

2.修改被托管主机k8s_node1的ssh默认端口

[root@k8s_node1 ~]# vim /etc/ssh/sshd_config
 ...
 17 Port 222      //默认端口为22,修改为222并取消注释
 18 #AddressFamily any
 ...

3.重启被托管主机k8s_node1的sshd服务

[root@k8s_node1 ~]# systemctl restart sshd
[root@k8s_node1 ~]# ss -antulp | grep sshd
tcp    LISTEN     0      128       *:222                   *:*                   users:(("sshd",pid=1801,fd=3))
tcp    LISTEN     0      128      :::222                  :::*                   users:(("sshd",pid=1801,fd=4))
[root@k8s_node1 ~]# ss -antulp | grep :222
tcp    LISTEN     0      128       *:222                   *:*                   users:(("sshd",pid=1801,fd=3))
tcp    LISTEN     0      128      :::222                  :::*                   users:(("sshd",pid=1801,fd=4))

 可以看到被托管主机k8s_node1的ssh端口已经被修改为222了,现在使用ansible来控制。


管理主机k8s_master1测试:

[root@k8s_master1 ~]# cat /etc/ansible/hosts   //查看ansible控制的主机列表
...
[k8s_node]
k8s_node1
k8s_node2
[root@k8s_master1 ~]# ansible k8s_node --list-hosts
  hosts (2):
    k8s_node1
    k8s_node2
[root@k8s_master1 ~]# ansible k8s_node  -m  ping
k8s_node1 | UNREACHABLE! => {
    "changed": false,  ----》//可以看到k8s_node1端口修改后无法ping通
    "msg": "Failed to connect to the host via ssh: ssh: connect to host k8s_node1 port 22: Connection refused",
    "unreachable": true
}
k8s_node2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

查看管理主机k8s_master1 默认配置文件:

[root@k8s_master1 ~]# cat /etc/ansible/ansible.cfg  //以下配置中的参数都是默认的,如果不需要修改某项参数的话,就不需要管(不需要取消注释),默认就好。
 ...
 14 inventory      = /etc/ansible/hosts
 15 library        = /usr/share/my_modules/
 20 forks          = 5
 22 sudo_user      = root
 26 remote_port    = 22
 71 host_key_checking = False
 103 timeout = 20
 111 log_path = /var/log/ansible.log
 ...

 可以看到/etc/ansible/ansible.cfg配置文件中指定inventory配置文件为/etc/ansible/hosts文件,并且第26行remote_port = 22表明ansible将使用ssh的默认端口22,假如在ansible控制的所有主机列表中某些主机的ssh端口都不一致怎么办呢?


--> 这时候我们就需要在/etc/ansible/ansible.cfg配置文件中指定inventory配置文件/etc/ansible/hosts文件中配置使用inventory变量了。


inventory


 inventory⽤于定义ansible要管理的主机列表,可以定义单个主机和主机组。上⾯的/etc/ansible/hosts就是默认的inventory。下⾯展⽰一些inventory常⽤的定义规则:


  • ansible_ssh_host:ansible使⽤ssh要连接的主机。


  • ansible_ssh_port :ssh的端⼝。默认为22。


  • ansible_ssh_user:ssh登录的⽤户名。默认为root。


  • ansible_ssh_pass :ssh登录远程⽤户时的认证密码。


  • ansible_ssh_private_key_file:ssh登录远程⽤户时的认证私钥。(?)


  • ansible_connection :使⽤何种模式连接到远程主机。默认值为smart(智能),表⽰当本地ssh⽀持持久连接(controlpersist)时采⽤ssh连接,否则采⽤python的paramiko ssh连接。


  • ansible_shell_type :指定远程主机执⾏命令时的shell解析器,默认为sh(不是bash,它们是有区别的,也不是全路径)。


  • ansible_python_interpreter:远程主机上的python解释器路径。默认为/usr/bin/python。


  • ansible_*_interpreter:使⽤什么解释器。例如,sh、bash、awk、sed、expect、ruby等等。


 以上inventory文件中可以使用的一些内置变量根据实战中实际情况按需使用即可!


 其中有⼏个参数可以在配置⽂件ansible.cf g中指定,但指定的指令不太⼀样,以下是对应的配置项:


  • remote_port:对应于ansible_ssh_port。


  • remote_user:对应于ansible_ssh_user。


  • private_key_file:对应于ansible_ssh_private_key_file。


  • excutable:对应于ansible_shell_type。但有⼀点不⼀样,excutable必须指定全路径,⽽后者只需指定basename。


配置管理主机k8s_master1 的hosts文件:


使用ansible_ssh_port变量指定k8s_node1被托管主机的ssh端口为222。

[root@k8s_master1 ~]# vim /etc/ansible/hosts
...
[k8s_node]
k8s_node1 ansible_ssh_port=222   //使用ansible_ssh_port变量指定端口
k8s_node2

管理主机k8s_master1测试:

[root@k8s_master1 ~]# ansible k8s_node  -m  ping
k8s_node2 | SUCCESS => {          ---》指定k8s_node1正确ssh端口后成功ping通
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
k8s_node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

可以看到在/etc/ansible/ansible.cfg配置文件中指定inventory配置文件/etc/ansible/hostsd 配置文件中定义使用ansible_ssh_port变量指定k8s_node1被托管主机ssh端口后,即可正常控制不同ssh端口的不同主机,并且不会影响正常控制其他ssh端口为默认端口22的主机。


拓展例子:

cat -n /etc/ansible/hosts
1 192.168.100.59:22
2 192.168.100.60 ansible_ssh_pass=123456 ansible_ssh_port=22
3 [nginx]
4 192.168.100.5[7:9]
5 [nginx:vars]
6 ansible_ssh_pass='123456'
7 [webservers:children]
8 nginx

 第⼀⾏和第⼆⾏单独定义主机,第⼀⾏带上了连接被管节点的端⼝,第⼆⾏带上了单独传递给ssh的参数,分别是ssh连接时的登录远程⽤户的密码参数和ssh的连接端⼝。


第三⾏和第四⾏定义的是nginx主机组,该组中包含了192.168.100.57到59这3台主机。还⽀持字母的扩展,如"web[a-d]"。


 第五⾏和第六⾏定义了要传递给nginx主机组的变量。若定义为"[all:vars]"或"[*:vars]"则表⽰传递给所有主机的变量。


 第七和第⼋⾏定义了⼀个新的主机组webservers,该组的组成员有nginx组。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
20天前
|
Web App开发 人工智能 自然语言处理
【人工智能时代】AI赋能编程 | 自动化工具助力高效办公
【人工智能时代】AI赋能编程 | 自动化工具助力高效办公
【人工智能时代】AI赋能编程 | 自动化工具助力高效办公
|
21天前
|
Shell 网络安全 iOS开发
最好用的SSH工具Royal TSX for mac使用教程
众所周知,在 Windows上我们经常用到的shell工具可能非 xshell莫属了。但是xshell却并没有开发mac 版本,我们只能用其他的工具替代了。 在我用过几个ssh工具之后,我觉得在macOS上最好用的ssh工具客户端必须是 Royal TSX,它和使用xhell的感觉简直一模一样。 Royal TSX是一款功能非常强大适用于 Mac 的远程连接管理工具。兼容多种连接类型,比如:RDP、VNC、基于SSH连接的终端,SFTP/FTP/SCP或基于Web的连接管理,Royal TSX 都可以满足您的要求!
最好用的SSH工具Royal TSX for mac使用教程
|
1月前
|
设计模式 Java 测试技术
软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具
软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具
41 0
|
23天前
|
Web App开发 前端开发 测试技术
如何对自动化工具选型?
如何对自动化工具选型?
|
1天前
|
Ubuntu Linux 网络安全
MobaXterm的是有用方法---集串口,SSH远程登录和FTP传输三合一工具
MobaXterm的是有用方法---集串口,SSH远程登录和FTP传输三合一工具
10 3
|
3天前
|
监控 测试技术 API
自动化测试工具与电脑桌面监控软件的集成:Selenium与Python的无缝整合
在当今数字化时代,软件质量保证是每个软件开发团队都必须面对的重要挑战之一。自动化测试工具和电脑桌面监控软件的结合,为开发团队提供了一种有效的方式来确保软件的稳定性和性能。本文将介绍如何利用Python编程语言中的Selenium库,与桌面监控软件进行无缝整合,以实现对应用程序的自动化测试和桌面监控。
22 5
|
11天前
|
关系型数据库 网络安全 数据库
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
23 6
|
18天前
|
网络安全 数据安全/隐私保护
如何使用ssh key免密码登录服务器?
如何使用ssh key免密码登录服务器?
|
22天前
|
Java jenkins 测试技术
常见自动化测试框架和工具
常见自动化测试框架和工具
|
23天前
|
存储 测试技术 定位技术
新一代自动化测试工具需要具备的功能
新一代自动化测试工具需要具备的功能

热门文章

最新文章

相关产品

  • 云迁移中心