Ansible “module_stderr“: “Shared connection to servera closed.\r\n“ 权限问题解决方案

问题:

[student@workstation asd]$ ansible servera -m ping
servera | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "module_stderr": "Shared connection to servera closed.\r\n",
    "module_stdout": "sudo: a password is required\r\n",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

配置文件

[student@workstation asd]$ cat ansible.cfg 

[defaults]
inventory = ./inventory
ask_pass = false
remote_user = student

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = False


[student@workstation asd]$ cat inventory
servera

原因:become_ask_pass = False 参数设置了免密提权

方法

方法一

如果将become_ask_pass参数设置为true,则可以正确运行,如下:

[student@workstation asd]$ cat ansible.cfg 

[defaults]
inventory = ./inventory
ask_pass = false
remote_user = student

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = true
[student@workstation asd]$ ansible servera -m ping
BECOME password:
servera | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

方法二

设置servera客户机提权配置:

步骤一:进入servera客户机,切换root用户

步骤二:进入 /etc/目录下,使用vim编辑sudoers文件

然后使用“:wq!”保存,不会真有人不保存吧

结果

[student@workstation asd]$ ansible servera -m ping
servera | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

误区与补充

网上大多数解决办法都是关于客户机和控制机python版本不一样

针对Ansible的环境

# 管理主机 和 被管理主机 		# Python版本“一定”要一致   

# 系统 和 Ansible的版本 最好一致
rhel 使用rhel的版本		其他系统 使用社区版本

在rhel8系统,ansible会自动的根据你的平台的python版本去选择。
[student@workstation ~]$ yum list platform-python
如果你是rhel系统,需要使用订阅命令通过RHN连到红帽的软件仓库进行下载安装。

如果你不懂修改sudoers文件的原理可以搜,有很多博客,在这里推荐一个,如果有问题可以评论提,看到会回复。

Linux上使用sudo命令给其他用户提权,为其赋予超级用户权限执行部分无权限命令以及sudo的常见参数简介_sudo提权详解-CSDN博客本文基于Linux上CentOS 7版本进行配置演示Linux上使用sudo命令给其他用户提权,为其赋予超级用户权限执行部分无权限命令以及sudo的常见参数简介一.编辑配置文件给其他用户配置提权1.查看配置文件内常用的参数2.查看其他用户无权限时的情况3.为其他用户配置sudo权限并测试二.配置文件使其他用户执行sudo命令时无需密码1.深感输密码的麻烦,为其设置使用sudo无需密码2.在其他用户方测试三.sudo命令的常见参数1.sudo -h2.sudo -l_sudo提权详解https://blog.csdn.net/weixin_64334766/article/details/128619322

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值