在Linux系统中安装和使用Ansible自动化工具

首先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"

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值