第十周-day41-批量分发秘钥与ansible模块_ansible批量分发密钥

ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ‘’

[09:35 root@m01 ~]# ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ''
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:kIna+Ce3UvZoIPzuIiOvKOaQwysKPlAeCTCC6zo+DRk root@m01
The key's randomart image is:
+---[DSA 1024]----+
|\*                |
|+.   . o         |
| o .. +          |
|.E++   .         |
|.+=..   S        |
|o=+.. o          |
|B.ooo+oo         |
|&=o.o+o..        |
|%@++oo.          |
+----[SHA256]-----+

5.免密交互
sshpass -p 123456 ssh -o StrictHostKeyChecking=no 172.16.1.31 hostname


6.免密分发秘钥
 sshpass -p123456   ssh-copy-id -o StrictHostKeyChecking=no 172.16.1.7


7.可以依次给其他主机分发秘钥
[09:57 root@m01 ~]# ssh 172.16.1.31 hostname
nfs01
[09:57 root@m01 ~]# ssh 172.16.1.41 hostname
backup
[09:57 root@m01 ~]# ssh 172.16.1.7 hostname
web01

8.sshpass为ssh 提供密码

非交互式 sshpass需要安装

[19:14 root@m01 ~]# sshpass -p123456 ssh 172.16.1.7 hostname
web01

9.for 循环语句

for 循环的格式:

for 变量 in 列表
do
命令
done 

for ip in 7 41
do
echo 172.16.1.$ip
done

[15:05 root@m01 ~]# for ip in 7 41; do echo 172.16.1.$ip; done
172.16.1.7
172.16.1.41

通过for 循环和sshpass 批量分发公钥

10.写一个for循环脚本
[10:04 root@m01 ~]# vim /server/scripts/for.sh
#!/bin/bash
for ip in  {1..7}
do
 echo 172.16.1$ip
done

执行一下:

[10:05 root@m01 ~]# sh  /server/scripts/for.sh
172.16.11
172.16.12
172.16.13
172.16.14
172.16.15
172.16.16
172.16.17

11.用for循环语句批量分发秘钥
直接执行命令:
for ip in 7 41 31; do  sshpass -p123456   ssh-copy-id -o StrictHostKeyChecking=no 172.16.1.$ip; done

或写脚本文件:
[10:11 root@m01 ~]# vim /server/scripts/fenfa.sh 
#!/bin/bash
for ip in 7 41 31
do
 sshpass -p123456   ssh-copy-id -o StrictHostKeyChecking=no 172.16.1.$ip
done

二、※创建一个脚本※

非交互式创建秘钥
非交互式分发秘钥

[10:43 root@m01 ~]# vim  /server/scripts/fenfa.sh
#!/bin/bash
#make key pair \\创建秘钥
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ''
#fenfa public key \\分发秘钥
for ip in 7 41 31
do
 sshpass -p123456   ssh-copy-id -o StrictHostKeyChecking=no 172.16.1.$ip
done

1.检查一下批量分发秘钥是否可以免密
[11:25 root@m01 ~]# ssh 172.16.1.7 hostname
web01
[11:25 root@m01 ~]# ssh 172.16.1.41 hostname
backup
[11:25 root@m01 ~]# ssh 172.16.1.31 hostname
nfs01

2.脚本书写流程:
1.第一步m01安装ansible

2.第二步创建公钥私钥
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P '' 

3.第三步推送公钥
sshpass -p123456 ssh-copy-id -f -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no" 172.16.1.41

4.第四部执行命令
ansible oldboy -m shell -a "w;df -h;free -h"
ansible /etc/ansible/hosts里设置的  主机组 -m 模块名 -a "命令"

扩展:脚本中添加一些其他的要求



三、☆※ ansible 批量管理 ※☆

不理解—先看图

安装ansible
yum install -y ansible

1.※ 查看ansible下配置文件
[11:53 root@m01 ~]# rpm -ql ansible|grep -v /usr/
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles

2.编辑主机清单/etc/ansible/hosts

在管理端配置好秘钥认证

[11:54 root@m01 ~]# ssh 172.16.1.41 hostname
backup
[11:56 root@m01 ~]# vim /etc/ansible/hosts 
......
[oldboy]
172.16.1.7
172.16.1.41
172.16.1.31
[11:58 root@m01 ~]# tail -4 /etc/ansible/hosts 
[oldboy]
172.16.1.7
172.16.1.41
172.16.1.31

3.ping 检查所有客户端是否存活

-m ping 检测添加的oldboy模块中的主机通不通

[11:58 root@m01 ~]# ansible oldboy -m ping
172.16.1.41 | SUCCESS => {
    "ansible\_facts": {
        "discovered\_interpreter\_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"   	\\pong表示通了
}
172.16.1.31 | SUCCESS => {
    "ansible\_facts": {
        "discovered\_interpreter\_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"		\\pong表示通了
}
172.16.1.7 | SUCCESS => {
    "ansible\_facts": {
        "discovered\_interpreter\_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"		\\pong表示通了
}


4.执行指定命令

command命令模式(只能执行简单命令 不支持 特殊符号)

[12:00 root@m01 ~]# ansible oldboy -m command -a 'hostname'
172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

5.执行指定某台主机命令
[12:08 root@m01 ~]# ansible 172.16.1.7 -a 'hostname'
172.16.1.7 | CHANGED | rc=0 >>
web01

6.执行所有主机命令
[12:09 root@m01 ~]# ansible all -a 'hostname'
172.16.1.41 | CHANGED | rc=0 >>
backup

172.16.1.31 | CHANGED | rc=0 >>
nfs01

172.16.1.7 | CHANGED | rc=0 >>
web01


四、☆※ ansible inventory主机清单常见配置 ☆※

主机支持指定变量,基于密码连接

五、☆※ Ansible Ad-Hoc 命令行批量执行命令※

官网查询帮助 主要看哪个参数必须要有

https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module

image.png

1.查询模块的命令
ansible-doc -s copy


ansable模块

2.模块案例

推送 ansible all -m copy -a ‘src=/etc/hostname dest=/tmp/’
查看 ansible all -a ‘cat /tmp/hostname’

copy模块
推送文件模块

[12:30 root@m01 ~]# ansible all -m copy -a 'src=/etc/hostname dest=/tmp/'
172.16.1.31 | CHANGED => {
    "ansible\_facts": {
        "discovered\_interpreter\_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "f434396716e2c9aed47cfde87c491cce5a2c08fa", 
    "dest": "/tmp/hostname", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "318d7defb693a2eb0d4f1a7a96575a57", 
    "mode": "0644", 
    "owner": "root", 
    "size": 4, 
    "src": "/root/.ansible/tmp/ansible-tmp-1559017854.64-224769717508792/source", 
    "state": "file", 
    "uid": 0
}
...省略


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/a77f2cee730e4b4eb459611710142a39.png)
![img](https://img-blog.csdnimg.cn/img_convert/733c14325ed3d97a7c8b55665472deed.png)
![img](https://img-blog.csdnimg.cn/img_convert/2b64283520eae1e55b6733e323db5da1.png)
![img](https://img-blog.csdnimg.cn/img_convert/971c339c4a097565a596d0e6d2e234d8.png)
![img](https://img-blog.csdnimg.cn/img_convert/acce81cebff417c90f146ca7895ac802.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/d509a19e549c786e191ea39b02dea8e5.jpeg)



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/802f628c1aa42fa0061c5e048874d4f7.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/572ead5ecb8cd2ba034ab029587af87a.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/370b430ee531d18c51c0f71a8a486e9e.jpeg)

厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
[外链图片转存中...(img-6qGZ1syc-1712916758420)]



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-NIcidgCW-1712916758420)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-9fJJKr9j-1712916758420)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-qmuEiM5Z-1712916758421)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值