统信uos(d版)部署ansible需依次完成apt或pip安装、ssh免密配置、ansible.cfg调优及主机清单定义;常见问题源于源未更新、python版本低、ssh未启用或主机清单错误。

如果您在统信UOS操作系统上需要部署Ansible自动化运维工具,但遇到包不可用、依赖缺失或权限配置异常等问题,则可能是由于系统源未更新、Python环境不匹配或SSH通信未就绪所致。以下是适用于统信UOS(d版)的多种Ansible安装与基础配置方法:
一、使用APT包管理器安装
该方式依赖统信UOS官方软件源,适用于d版系统默认仓库已包含ansible二进制包的场景,安装过程简洁、依赖自动解析,适合生产环境快速部署。
1、更新系统软件源索引:apt update
2、执行安装命令:apt install -y ansible
3、验证是否成功安装:ansible --version
4、若提示“无法定位软件包”,请确认当前系统版本为统信UOS服务器操作系统d版,并检查源配置中是否启用main和universe组件。
二、通过Python pip安装
当APT源中ansible版本过旧或缺失时,可采用pip方式安装最新稳定版,该方法绕过系统仓库限制,适用于需特定Ansible版本(如2.16+)或自定义Python运行环境的场景。
1、确认Python版本不低于3.8:python3 --version
2、安装pip工具(如未预装):apt install -y python3-pip
3、升级pip至最新版:python3 -m pip install --upgrade pip
4、安装Ansible核心包:python3 -m pip install ansible
5、验证可执行路径是否生效:which ansible
6、若执行报错ModuleNotFoundError: No module named 'yaml',需额外安装PyYAML:python3 -m pip install PyYAML
三、配置SSH免密登录(批量管理前提)
Ansible基于SSH协议执行任务,必须确保控制节点能无密码访问被管主机,包括本机(用于本地测试或单机管理),否则所有远程操作将因认证失败而中断。
1、在Ansible控制节点生成SSH密钥对(连续回车使用默认路径及空密码):ssh-keygen -t rsa
2、将公钥复制至目标客户端主机(以IP 192.168.247.154为例):ssh-copy-id root@192.168.247.154
3、将公钥复制至本机(实现localhost管理):ssh-copy-id root@127.0.0.1
4、测试免密连通性:ssh -o ConnectTimeout=5 -o BatchMode=yes root@192.168.247.154 exit &>/dev/null && echo "Success" || echo "Failed"
5、若连接失败,请确认目标主机已启用SSH服务且PermitRootLogin yes在/etc/ssh/sshd_config中生效,并重启sshd:systemctl restart sshd
四、配置Ansible主配置文件
主配置文件决定Ansible全局行为,例如是否跳过SSH主机密钥检查、日志路径、临时目录等。修改前建议备份原始配置,避免误配导致命令执行异常。
1、编辑主配置文件:nano /etc/ansible/ansible.cfg
2、取消注释并设置:host_key_checking = False
3、启用日志记录(可选):log_path = /var/log/ansible.log
4、创建日志目录并授权:mkdir -p /var/log/ansible && chown root:root /var/log/ansible && chmod 755 /var/log/ansible
5、设置远程临时目录(提升执行稳定性):remote_tmp = /tmp/.ansible-${USER}/tmp
6、保存退出后,验证配置语法:ansible-config dump | grep host_key_checking
五、配置主机清单(Inventory)
主机清单定义Ansible管理的目标范围,支持分组、变量注入与IP段简写。默认路径为/etc/ansible/hosts,是后续所有模块调用的基础依据。
1、打开清单文件:nano /etc/ansible/hosts
2、添加一个名为[web]的主机组:
[web]
192.168.247.154
192.168.247.131
3、为该组统一指定连接参数(可选):
[web:vars]
ansible_ssh_user = root
ansible_ssh_port = 22
4、保存后测试连通性:ansible web -m ping
5、若返回UNREACHABLE!,请核查SSH服务状态、防火墙策略及/etc/ansible/hosts中IP地址是否准确无误。









