首先Ansible不需要太多的自定义配置,可以用yum源默认安装
先准备三台机器(一个老板机器,两个员工机器)
先准备Ansible管理机器(老板)
1.选择yum自动化安装,阿里云yum,epel源,前提是就先配置好
yum install epel-release -y
yum install ansible libselinux-python -y
2.检查Ansible软件安装的情况,查询配置文件、和可执行命令
rpm -ql ansible | grep -E '^/etc|^/usr/bin'
3.检查Ansible版本
ansible --version
再准备Ansible被管理机器(员工),安装Ansible所需要的系统模块
(在两个员工机器中安装)
yum install epel-release libselinux-python -y
Ansible管理方式
Ansible批量管理主机的方式主要有两种
1.传统的输入ssh密码验证
2.密钥管理
配置好Ansible的配置文件,添加被管理机器的ip地址,或者是主机名
1.备份现有的配置文件(hosts)
ls /etc/ansible/
cp /etc/ansible/hosts /etc/ansible/hosts.ori
2.添加Ansible需要管理的机器地址
在hosts文件中添加两个主机地址
vim /etc/ansible/hosts
加入的两个员工的主机地址 这里面的 [xiaoguang] 算是一个模块 主机列表(包含两个员工主机)
【xiaoguang】
192.168.196.150
192.186.,196.142
ssh密码认证方式管理机器
Ansible是直接利用linux本地的ssh服务,以及一些远程的ssh操作,一般情况下客户端的ssh服务默认是开启的,无需额外管理
1.在老板机器上执行如下命令
-m 指定功能模块,默认就是command模块
-a 告诉模块需要执行的参数
-k 询问密码验证
-u 指定运行的用户
在老板机器上,告诉其他被管理的机器,你要执行什么命令,以及用什么用户去执行
ansible xiaoguang(也可以ip地址) -m command -a 'hostname' -k -u root
2.如上操作,一般默认情况下会有提示报错提醒,需要执行如下动作,只需要手动ssh对其它被管理的主机进行一次连接,就可以使用ansible命令操作了
ssh root@192.168.196.150
ssh root@192.168.196.142
3.此时可以再次执行ansible命令
要确保主机都是在一个局域网内
上面紫色部分是警告信息,下面输出了主机的名称就已经成功了
配置免密登录
每次执行ansible命令的时候,都需要输入ssh的认证密码,也就是root的密码,如果不同的主机密码不一致,你那还要输入多次才行,因此我们可以配置如下的快捷登录方式
ansible 自带的密码认证参数
可以在 /etc/ansible/hosts文件中,定义好密码即可,即可实现快速认证,远程管理主机
参数
ansible_host 主机地址
ansible_port 端口,默认是22端口
ansible_user 认证的用户
ansible_ssh_pass 用户认证的密码
使用host文件的参数形式,来实现ssh认证
1.修改hosts文件,改为如下
[xiaoguang]
192.168.196.150 ansible_user=root ansible_ssh_pass=123456
2.此时可以不需要输入密码,即可自动ssh验证通过了
ansible xiaoguang -m command -a 'ifconfig ens33'
以上方式是不安全的,需要一种机密的方式
ssh密钥方式批量管理主机
这个方式比起hosts文件的密码参数来的更安全放心
1. 在老板机器上创建密钥对
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1
(这里解释一下这个命令,生成一个公钥文件id_rsa,-P 指定这个公钥的密码为空,> 重定向到/dev/null
这个黑洞文件中,这样谁也都不知道公钥的密码)
2.此时检查公私钥文件
cd ~/.ssh/ (用户家目录下的隐藏文件ssh)
ll (查看创建形成的公钥文件)
id_rsa
如果是十台二十台主机,这时候就需要编写公钥分发脚本
#!/bin/bash
rm -rf ~/.ssh/id_rsa*
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1
SSH_Pass=123456
Key_Path=~/.ssh/id_rsa.pub
for ip in (你要批量分发的机器ip地址) 150 151 152 153 154
do
sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" 192.168.196.$ip(这个$ip就是上面批量分发的机器的ip地址)
done
# 非交互式分发公钥命令需要用sshpass指定SSH密码,通过-o StrictHostKeyChecking=no 跳过SSH链接确认信息
此时在老板机器上再连接员工机器,就无需输入账号密码了,可以尝试使用ansible命令进行连接
ansible xiaoguang -m command -a "uname -a"