一共三步,创建密钥,分发公钥,开始连接。
1、ssh-keygen -t rsa (ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '') 这种就没有提示,直接创建。
2、ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.19.42
3、ssh 192.168.19.42 (也可以在后面加命令,例如 ls hostname等等 )
接着第一步无提示创建密钥后,然后实现无yes或no直接分发公钥。
sshpass -p\iso9001 ssh-copy-id -oStrictHostKeyChecking=no root@192.168.19.48
#!/bin/bash
#author :david.z
#version: v1
#desc: 一键创建密钥对 分发密钥对
#1.vars
pass=\iso9001
ips="192.168.19.48 192.168.19.42 192.168.19.37 192.168.19.45 192.168.19.39 192.168.19.40 192.168.19.43 192.168.19.51"
. /etc/init.d/functions
#1.4 判断是否联网或是否可以使用yum
#1.5 加入判断sshpass命令是否存在,如果不存在则安装
#2.创建密钥对
if [ -f ~/.ssh/id_rsa ] ;then
echo "已经创建过密钥对"
else
echo "正在创建密钥对。。。"
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' &>/dev/null
if [ $? -eq 0 ];then
action "密钥创建成功" /bin/true
else
action "密钥创建失败" /bin/false
fi
fi
#3.通过循环分发公钥
for ip in $ips
do
sshpass -p${pass} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no $ip &>/dev/null
if [ $? -eq 0 ];then
action "$ip 公钥分发成功" /bin/true
else
action "$ip 公钥分发失败" /bin/false
fi
#echo "$ip 密钥已经发送"
done
上面为一键分发密钥脚本。可以自动分发密钥,同时多台分发公钥。
如下效果显示。
自动化管理工具 ansible.
安装 yum install -y ansible
修改配置文件。
[root@dgp-KMS scripts]# egrep -v '^$|#' /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
log_path = /var/log/ansible.log
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
修改默认分组文件。
vim /etc/ansible/hosts
试一下ping,绿色代表正常,红色或者紫色代表异常。
如何创建data组包含已有的组呢?
单独试一下data组的ping
安装好了ansible之后,然后就是做主机列表。
做好了主机列表,然后要学会ansible的模块,一共有很多种模块,要学很久的,学好了模块就可以做剧本了。
这里放一个我做的NFS自动化部署的剧本。
首先要在ansible上 建立主机列表,首先自己建立一个playbook的目录,然后把剧本yml和主机表放在里面。如图
然后就可以在里面写剧本了。 我一共写了4个剧本,全部分享出来。
第一个是测试剧本。
---
- hosts: web
tasks:
- name: 01 打开冰箱门
shell: echo 01 >>/tmp/bingxiang/log
- name: 02 把大象放入冰箱
shell: echo 02 >>/tmp/bingxiang/log
- name: 03 关上冰箱的门
shell: echo 03 >>/tmp/bingxiang/log
第二个.
- hosts: web
tasks:
- name: 01 创建目录
file:
path: /server/files/
state: directory
- name: 02 分发文件
copy:
src: /etc/hosts
dest: /server/files/
第三个。这个是批量安装zabbix客户端agent.
- hosts: web
tasks:
- name: 01. 下载软件包
get_url:
url: "https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.7-1.el7.x86_64.rpm"
validate_certs: no
dest: /tmp/
- name: 02. 安装软件包
yum:
name: /tmp/zabbix-agent-6.0.7-1.el7.x86_64.rpm
state: present
- name: 03. 配置
debug:
msg: "进行配置zabbix-agent"
- name: 04. 启动
systemd:
name: zabbix-agent
enabled: yes
state: started
第四个,重点,自动部署NFS服务器和客户端。而且同时部署两台NFS服务器。
#nfs服务端部署
- hosts : nfs
tasks:
- name: 01. 部署nfs-utils,rpcbind
yum:
name: nfs-utils,rpcbind
state: present
- name: 02. 修改配置文件
lineinfile:
path: /etc/exports
line: "/backup-nfs 192.168.19.0/24(rw,all_squash)"
create: true
- name: 03. 创建共享目录并改所有者
file:
path: /backup-nfs
owner: nfsnobody
group: nfsnobody
state: directory
- name: 04-1. 启动服务rpcbind,nfs(注意顺序)
systemd:
name: rpcbind
enabled: yes
state: started
- name: 04-2. 启动服务rpcbind,nfs(注意顺序)
systemd:
name: nfs
enabled: yes
state: started
#nfs客户端部署
- hosts: web
tasks:
- name: 01. 部署nfs-utils
yum:
name: nfs-utils
state: present
- name: 02. 挂载nfs
mount:
src: 192.168.19.48:/backup-nfs
path: /ans-upload
state: mounted
fstype: nfs
- name: 03. 挂载nfs
mount:
src: 192.168.19.51:/backup-nfs
path: /ans-upload2
state: mounted
fstype: nfs
排除#号显示ansible配置文件。