目录
一,Anbiblbe的环境准备
1,需要准备三台虚拟主机
2,三台虚拟机均需开启防火墙,开启selinux(无需操作,默认开启)
3,网络配置:在NAT模式下,配置至少一个可上网的静态ip
4,修改主机名
5,确保三台主机时间一致
6,控制端通过主机名免密
二,Ansible安装与配置
1,配置centos8的基础源
2,配置epel扩展源
3,安装ansibl
案例一:
控制主机和受控主机通过root用户以免密验证远程控制住受控主机实验实施对应任务
案例二:
控制主机连接受控主机通过普通用户以免密验证远程控制住受控主机实验实施特权指定操作
(1)控制端主机server配置静态ip192.168.206.100
(2)受控端主机node1配置静态ip192.168.206.111
(3)受控端主机node2配置静态Ip192.168.206.222
(1)控制端主机server
[root@server ~]# hostnamectl set-hostname server.example.com
[root@server ~]# bash
[root@server ~]# hostname
(2)受控主机node1
[root@bogon ~]# hostnamectl set-hostname node1.example.com
[root@bogon ~]# bash
[root@node1 ~]# hostname
(3)受控主机node2
[root@bogon ~]# hostnamectl set-hostname node2.example.com
[root@bogon ~]# bash
[root@node2 ~]# hostname
查看三台主机的时间是否一致
(1)控制端主机server的时间如下
[root@server ~]# date
(2)受控端主机noe1的时间如下
[root@node1 ~]# date
(3)受控端主机noe2的时间如下
[root@node2 ~]# date
可以看到三台主机的时间一致 ,如果不一致,使用命令
timedatectl set-timezone Asia/Shanghai 修改为同一时区
(1)配置控制端server的主机名文件
[root@server ~]# vim /etc/hosts
192.168.206.111 node1 node1.example.com
192.168.206.222 node2 node2.example.com
(2)配置受控端node1的主机名文件
[root@node1 ~]# vim /etc/hosts
192.168.206.100 server server.example.com
192.168.206.222 node2 node2.example.com
(3)配置受控端node2的主机名文件
[root@node2 ~]# vim /etc/hosts
192.168.206.100 server server.example.com
192.168.206.222 node1 node1.example.com
(4)在控制端的目录/root/.ssh/id_rsa下面生成公钥
[root@server ~]# ssh-keygen -t RSA
也可以通过静默方式产生公钥
ssh-keygen -t RSA -P ' ' -q -f /root/.ssh/id_rsa
-t RSA 生成公钥的方式
-P ' '
-q 静默
-f 指定存储文件
(5)把公钥发送到node1与node2主机上,首次发送要进行秘钥和密码验证
[root@server ~]# ssh-copy-id -i node1
[root@server ~]# ssh-copy-id -i node2
(6)查看公钥是否发送到受控端node1
[root@node1 ~]# cd /root/.ssh[root@node1 .ssh]# ll
(7)查看公钥是否发送到受控端node2
[root@node2 ~]# cd /root/.ssh
[root@node2 .ssh]# ll
(8)此时可以在控制端免密登录node1与node2
[root@server ~]# ssh node1
[root@server ~]# ssh node2
,
(1)在yum.repos.d的目录下创建文件base.repo
[root@server yum.repos.d]# vim base.repo
(2)在base.repo文件中配置cectos8的基础源
[AppStream]
name=1
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgcheck=0
[BaseOS]
name=2
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgcheck=0
(1)安装epel安装包
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
(2)将 repo 配置中的地址替换为阿里云镜像站地址
[root@server yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=http[root@server yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
yum install ansible -y
查看是否安装成功
ansible --version
(1)配置控制端server的主机名文件
[root@server ~]# vim /etc/hosts
192.168.206.111 node1 node1.example.com
192.168.206.222 node2 node2.example.com
(2)配置受控端node1的主机名文件
[root@node1 ~]# vim /etc/hosts
192.168.206.100 server server.example.com
192.168.206.222 node2 node2.example.com
(3)配置受控端node2的主机名文件
[root@server ~]# ssh-keygen -t RSA
[root@node2 ~]# vim /etc/hosts
192.168.206.100 server server.example.com
192.168.206.222 node1 node1.example.com
(4)在控制端的目录/root/.ssh/id_rsa下面生成公钥
[root@server ~]# ssh-keygen -t RSA
(5)把公钥发送到node1与node2主机上,首次发送要进行秘钥和密码验证
[root@server ~]# ssh-copy-id -i node1
[root@server ~]# ssh-copy-id -i node2
(6)通过server主机连接到Node1主机并查看主机名
[root@server ~]# ssh node1 hostname
控制端主机通过sudo提权;受控端主机通过sudoers文件授权
(1)确保控制端server和受控端node1,node2都有一个相同的普通用户
[root@server ~]# id redhat
[root@node1 .ssh]# id redhat
[root@node2 .ssh]# id redhat
(2) 控制端以redhat身份免密远程登录受控端
以redhat身份在主控端生成公钥
[redhat@server ~]$ ssh-keygen -t rsa -P '' -q -f ~/.ssh/id_rsa
[redhat@server ~]$ ls -l ~/.ssh/id_rsa
把控制端生成的公钥发送的受控端node1,node2上
[redhat@server ~]$ ssh-copy-id -i redhat@node1
[redhat@server ~]$ ssh-copy-id -i redhat@node2
免密登录验证
[redhat@server ~]$ ssh node1 hostname
(3)此时控制端的普通用户redhat没有执行特权指令的权限
[redhat@server ~]$ ssh node1 useradd user1
(4)在受控主机node1,node2上进行授权
授权方法一:
在受控主机node1打开sudoers文件进行授权配置
[root@node1 .ssh]# vim /etc/sudoers
redhat ALL=(ALL) NOPASSWD:ALL
redhat被提权的用户
ALL=(ALL) 被授权的主机=授权用户的身份
NOPASSWD:ALL 后期普通用户获得权限后不需要密码验证: 授予哪些权限
授权方法二:
在/etc/sudoers文件中的wheel组中配置免密验证,并把普通用户加入到wheel组中,那么wheel组中的所有用户都可以获取root的所有特权且不需要验证密码
[root@node2 .ssh]# vim /etc/sudoers
允许wheel组中的用户可以获取root的所有命令特权且不需要密码验证
%wheel ALL=(ALL) NOPASSWD:ALL
把redhat用户加入到wheel组中
[root@node2 .ssh]# gpasswd -a redhat wheel
(5)测试授权结果
控制端免密远程登录到受控端node1创建一个新用户user1
[redhat@server ~]$ ssh node1 sudo useradd user1[redhat@server ~]$ ssh node1 id user1