ansible 切换用户建立ssh连接并使用sudo 权限执行程序

ansible 运行的时候默认首先会以运行程序的用户身份与客户端的对应用户建立连接,比如以root身份运行ansible-playbook test.yml时,ansible首先会以root身份与客户机的root建立ssh连接。

如果要指定用户,需要使用--user 的参数,如果需要sudo 到root,需要用-s的参数

ssh-keygen

【注:切换到建立ssh连接的用户usera运行: su - usera,因为该认证文件只适用于本用户usera与其他用户的ssh连接认证】

拷贝ssh公钥到被控制机器节点

ssh-copy-id -i ~/.ssh/id_rsa.pub usera@xx.xx.xx.xx

在root用户下运行命令

ansible-playbook test.yml --user=usera --private-key=/home/usera/.ssh/id_rsa -s  

ansible -i hosts  testgroup  -m ping --user=usera  --private-key=/home/usera/.ssh/id_rsa  -s

这里 --user=usera 表示使用usera与被控节点的usera建立ssh连接。--private-key表示ssh使用的认证文件,

-s 表示在连接到被控制机器节点后使用usera 的sudo权限运行test.yml中的命令。

由于需要使用usera的sudo权限,这里需要usera的sudo密码,有3种方式实现,第一:在运行命令中添加 --ask-sudo-pass,在命令运行时手动输入sudo的密码;第二,让usera sudo 免密码,第三:在ansible的配置文件hosts中配置sudo密码,ansible默认的hosts位于/etc/ansible/hosts。本文采用第3种方式。

hosts文件的配置如下所示:

[usera]

192.168.1.108 ansible_sudo_pass='123456'

[userb]

192.168.1.107 ansible_sudo_pass='123456'

【注:ansible 建立连接时默认使用的认证文件是该用户的主目录下的ssh rsa文件,所以当使用其他用户建立ssh连接时需要指定--private-key文件】

运行中的坑:

在拷贝玩ssh文件到被控制主机后,第一次运行会出现检查keys的对话,导致ssh连接失败,如下:

The authenticity of host '192.168.0.5 (192.168.0.5)' can't be established.

ECDSA key fingerprint is 05:51:e5:c4:d4:66:9b:af:5b:c9:ba:e9:e6:a4:2b:fe.

Are you sure you want to continue connecting (yes/no)?

为了确保连接ansible的顺利执行,需要在ansible的配置文件中添加忽略keys检查的配置,ansible的配置文件默认在
/etc/ansible/ansible.cfg。在该文件中添加如下语句即可。

host_key_checking = False

参考:

https://blog.csdn.net/github_36895970/article/details/53454048

http://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html#githubansible

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值