Ansible 连接受控端sudo超时

本文讲述了在使用Ansible管理一台负载较重的受控端时遇到的超时问题,通过调整sudoers文件中的timestamp_timeout以及hosts文件中的ansible_ssh_timeout来优化连接,确保命令执行成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在装Ansible,有一台受控端负载重,响应慢。当用Ansible连接它时,总是提示超时。

现象

主控端

  • 执行脚本
ansible 192.168.5.37 -m shell -a 'ip a| grep 192.168.'
192.168.5.37 | FAILED | rc=-1 >>
Timeout (12s) waiting for privilege escalation prompt: 

解决

受控端

  • 修改sudoers超时时间
vim /etc/sudoers

在行Defaults env_reset下增加

# 单位分钟 
Defaults    timestamp_timeout = 15

详见:Linux学习记录:sudo相关

主控端

  • 修改hosts文件
vim /etc/ansible/hosts
# 单位秒
192.168.5.37 ansible_ssh_timeout=30
  • 执行效果
ansible 192.168.5.37 -m shell -a 'ip a| grep 192.168.'
192.168.5.37 | CHANGED | rc=0 >>
    inet 192.168.5.37/24 brd 192.168.5.255 scope global noprefixroute ens192

详见:ansible.builtin.ssh connection – connect via SSH client binary - timeout

### 如何在 Linux 系统中配置 Ansible #### 安装 EPEL 源并安装 Ansible 为了能够在 RedHat 或 CentOS 系列的 Linux 发行版上成功安装 Ansible,需要先启用 `EPEL` 软件源。这是因为 Ansible 并未默认包含在标准仓库中[^3]。 ```bash sudo yum install -y epel-release sudo yum install -y ansible ``` 完成上述操作后,Ansible 将被正确安装到系统中。 --- #### 配置受控免密登录 每次运行 Ansible 命令时手动输入 SSH 密码会降低效率。为了避免这种情况,可以通过设置公钥认证的方式实现免密码登录[^4]。 1. **生成本地用户的 SSH 密钥对** 如果尚未创建过 SSH 密钥,则需执行以下命令: ```bash ssh-keygen -t rsa ``` 2. **将公钥复制至目标主机** 使用 `ssh-copy-id` 工具将当前机器上的公钥传输给远程服务器: ```bash ssh-copy-id root@<remote-host-ip> ``` 3. **测试连接** 测试是否能够无密码访问远程主机: ```bash ssh root@<remote-host-ip> ``` 如果一切正常,无需再次输入密码即可建立连接。 --- #### 修改主配置文件 `ansible.cfg` Ansible 的核心配置位于 `/etc/ansible/ansible.cfg` 文件中。以下是几个常见的配置项及其作用说明[^2]: - **inventory**: 设置主机清单的位置,默认路径为 `/etc/ansible/hosts`。 ```ini inventory = /etc/ansible/hosts ``` - **forks**: 控制并发的任务数量,默认值通常为 5。 ```ini forks = 10 ``` - **timeout**: 连接超时时间(单位秒),可根据网络状况调整。 ```ini timeout = 10 ``` - **log_path**: 日志存储位置,便于后续排查问题。 ```ini log_path = /var/log/ansible.log ``` 编辑完成后保存退出。 --- #### 编辑 Hosts 主机清单文件 Hosts 文件用于定义受管节点的信息以及分组逻辑。其典型结构如下所示: ```ini [xiaoguang] 192.168.196.150 ansible_user=root ansible_ssh_pass=123456 [dbservers] dbserver1.example.com dbserver2.example.com ``` 每台设备都可以附加额外参数以简化管理流程,比如指定用户名 (`ansible_user`) 和密码 (`ansible_ssh_pass`)。 --- #### 执行基本任务 当所有前期准备工作就绪之后,便可以尝试发送一些简单的指令去验证功能是否正常工作。例如查看某一台特定计算机上的 IP 地址信息: ```bash ansible xiaoguang -m command -a 'ip addr show' ``` 此命令向名为 `xiaoguang` 的组内的成员发出请求,让它们返回网卡详情报告。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值