《Ansible Playbook扩展:使用秘钥文件远程执行playbook》

一、简介

在主机清单文件中,可能处于安全考虑,你可能不会记录被控端主机的用户名、密码、SSH端口。如下图所示,定义了root用户的账号密码,可能会出现问题。

在这里插入图片描述

当然这个问题也可以解决,通过ansible-vault对主机清单文件加密。这里就通过另外一种方式来避免用户名、密码以明文的形式出现在主机清单中。


二、操作步骤

2.1、对单个playbook剧本任务定义密钥文件

说明:这里就以控制端为普通用户lolaage为例。

1、在主控端上创建普通用户

[root@localhost ~]# useradd lolaage
[root@localhost ~]# echo "123456" | passwd --stdin lolaage

2、主控端上lolaage用户下生成公私钥文件

[lolaage@localhost  ~]$ whoami
lolaage
[lolaage@localhost ~]$ ssh-keygen -t dsa  -f ~/.ssh/id_dsa  -P ""
[lolaage@localhost ~]$ sshpass -p123456 ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.1.191
[lolaage@localhost ~]$ sshpass -p123456 ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.1.192
[lolaage@localhost ~]$ sshpass -p123456 ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.1.193

说明:这里主要是主控端普通用户lolaaage与受控端主机root用户之间的互信。

3、主机清单文件

[mysql_cluster_1]
192.168.1.191

[mysql_cluster_2]
192.168.1.192

[mysql_cluster_3]
192.168.1.193

4、一个简单的playbook

当主控端是以lolaage用户登录的,则在playbook文件中中无需定义密钥文件

- name: 使用私钥文件连接到远程主机
  hosts: mysql_cluster_1
  remote_user: root
  tasks:
    - name: 执行命令
      command: date

当主控端是以root用户或其它用户登录的,则需要在playbook文件中定义密钥文件,将/home/lolaage/.ssh/id_dsa文件复制到/opt/mysql_cluster/cluster/node3目录中,并给予777权限。

- name: 使用私钥文件连接到远程主机
  hosts: mysql_cluster_1
  remote_user: root
  vars:
    ansible_ssh_private_key_file: /opt/mysql_cluster/cluster/node3/id_dsa
  tasks:
    - name: 执行命令
      command: date

5、执行结果如下所示:
在这里插入图片描述


2.2、对所有playbook剧本任务定义密钥文件

说明:这里就以控制端为普通用户lolaage为例。

1、在主控端上创建普通用户

[root@localhost ~]# useradd lolaage
[root@localhost ~]# echo "123456" | passwd --stdin lolaage

2、主控端上lolaage用户下生成公私钥文件

[lolaage@localhost  ~]$ whoami
lolaage
[lolaage@localhost ~]$ ssh-keygen -t dsa  -f ~/.ssh/id_dsa  -P ""
[lolaage@localhost ~]$ sshpass -p123456 ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.1.191
[lolaage@localhost ~]$ sshpass -p123456 ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.1.192
[lolaage@localhost ~]$ sshpass -p123456 ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.1.193

说明:这里主要是主控端普通用户lolaaage与受控端主机root用户之间的互信。

3、主机清单文件

当主控端是以lolaage用户登录的,则主机清单文件中无需定义密钥文件

[mysql_cluster_1]
192.168.1.191

[mysql_cluster_2]
192.168.1.192

[mysql_cluster_3]
192.168.1.193

当主控端是以root用户或其它用户登录的,则需要在主机清单文件中定义密钥文件,将/home/lolaage/.ssh/id_dsa文件复制到/opt/mysql_cluster/cluster/node3目录中,并给予777权限。

[mysql_cluster_1]
192.168.1.191 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_private_key_file=/opt/mysql_cluster/cluster/node3/id_dsa

[mysql_cluster_2]
192.168.1.192 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_private_key_file=/opt/mysql_cluster/cluster/node3/id_dsa

[mysql_cluster_3]
192.168.1.193 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_private_key_file=/opt/mysql_cluster/cluster/node3/id_dsa

执行playbook示例如下:
在这里插入图片描述


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值