Ansible批量管理工具
- 批量管理概念就是 同时并行管理多台主机
(1) 实现批量分发数据信息(模板主机的数据当作模板分发被管理主机)
(2) 实现批量部署软件
(3) 实现收集信息
(4) 实现批量自动化管理应用
- PS : ansible软件特点
(1) 部署方便简单
(2) 软件不需要启动服务
(3) 客户端不需要进行配置
(4) 功能强大
Ansible软件部署安装
-
安装ansuble
管理端安装ansible软件程序
yum install -y ansible
PS : 注意被管理端防火墙策略 selinux 安全策略是否阻止
-
安装后软件配置路径
配置目录/etc/ansible/
[root@m01 ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
1 directory, 2 files
其中 :
ansible.cfg
是配置ansible软件设置 默认就好
hosts
是配置主机清单,在最后一行进行编写被管理端IP
roles
是配置ansible剧本
- 主机清单配置方法
(1) 直接简单粗暴写上被管理端IP
[root@m01 ~]# vim /etc/ansible/hosts
最下面编写
172.16.1.41
172.16.1.31
172.16.1.7 <--每一个IP都要新起一行写
测试方法 :
[root@m01 ~]# ansible 172.16.1.41,171.16.1.31,172.16.1.7 -m ping
ping模块 测试是否连接
(2) 分组编写
[root@m01 ~]# vim /etc/ansible/hosts
[nfs]
172.16.1.31
[backup]
172.16.1.41
[web] <-- [组名] 用方括号来定义组名
172.16.1.7 <-- IP 下面写定义的组包含ip
测试:
[root@m01 ~]# ansible nfs,backup,web -m ping
(3) 设置管理主机连接参数信息(设置absible程序内置变量)
[root@m01 ~]# vim /etc/ansible/hosts
172.16.1.31 ansible_user=root ansible_password=123456 ansible_prot=22
Ansible_user= 登陆的用户
Ansible_password= 登陆的用户密码
Ansible_prot= 指定连接端口
Xxx名字 ansible_host=172.16.1.31 定义主机名 在ansible内部定义
测试 :
[root@m01 ~]# ansible 172.16.1.31 -m ping
(4) 嵌入式配置
[root@m01 ~]# vim /etc/ansible/hosts
[oldboy:children] <--固定格式 [主组名:children]
nfs <--下面是附属的组名称
web
backup
[nfs]
172.16.1.31
[backup]
172.16.1.41
[web]
172.16.1.7
以后就可以直接输入主组名称 一起控制下面附属组内的ip地址主机
测试 :
[root@m01 ~]# ansible oldboy -m ping
嵌入式配置
[rsync]
172.16.1.31
172.16.1.7
[rsync:vars] 固定写法 代表设置变量
ansible_user=root
ansible_passwprd=12345
ansible_port=22
PS : [组名:vars] 表示下面的变量设置全都设置给对应组下所有ip地址
(5) 使用匹配符合,匹配多个主机
[root@m01 ~]# vim /etc/ansible/hosts
[rsync]
172.16.1.[1:7]
设置rsync组下的ip地址为172.16.1.1到7
PS连续的可用 不连续的不要用
Ansible常见问题错误
-
Ansible提示信息颜色
(1) 绿色 操作执行成功 , 对主机信息进行查看
(2) 黄色 对主机信息调整修改成功 对主机信息进行查看
(3) 紫色 错误提示信息(一般紫色还能浪) 建议忠告信息
(4) 红色 报错提示信息
执行时出现小牛 可修改ansible配置文件
修复/etc/ansible/ansible.cfg
218行取消注释
配置文件
- 问题一: 提示port 22: Connection refused(端口22不通)
172.16.1.41 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 172.16.1.41 port 22: Connection refused",
"unreachable": true
}
排错方法:
01. 利用ssh命令远程连接测试
02. 还是不通检查ssh是否设置错误 或 ansible内置参数设置错误
- 问题二: 提示Permission denied (没公钥信息)
172.16.1.41 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).",
"unreachable": true
}
排错:
01. 分发公钥信息
- 问题三: No hosts matched (主机信息不匹配)
[root@m01 ansible]# ansible 172.16.1.31 -m ping
[WARNING]: Could not match supplied host pattern, ignoring: 172.16.1.31
[WARNING]: No hosts matched, nothing to do
排错:
01. 修改主机清单信息
只有主机清单中定义主机信息,可以被ansible管理
网友评论