(1)是基于python语言开发的自动化软件工具
(2)是基于SSH远程管理服务实现远程主机批量管理
(3)并行管理,部署简单,应用也简单方便
(1)提高工作的效率
(2)提高工作的准确度
(3)减少维护的成本
(4)减少重复性工作
(1)可以实现批量系统操作配置
(2)可以实现批量软件服务部署
(3)可以实现批量文件数据分发
(4)可以实现批量系统信息收集
(1)管理端不需要启动服务程序(no server)
(2)管理端不需要编写配置文件(/etc/ansible/ansible.cfg)
(3)受控端不需要安装软件程序(libselinux-python)
(4)受控端不需要启动服务程序(no agent=无代理)
(5)服务程序管理操作模块众多(module)
(6)利用剧本编写来实现自动化(playbook)
(1)连接插件(connectior plugins) :用于连接主机 用来连接被管理端
(2)核心模块(core modules) :连接主机实现操作, 它依赖于具体的模块来做具体的事情
(3)自定义模块(custom modules) :根据自己的需求编写具体的模块
(4)插件(plugins) :完成模块功能的补充
(5)剧本(playbooks):ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
(6)主机清单(host inventory):主机清单配置信息,定义ansible需要操作主机的范围
(7)最重要的一点是 ansible是模块化的,它所有的操作都依赖于模块
2 ansible服务部署 2.1 ansible安装
系统、内核版本
[root@m01 ~]#cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@m01 ~]#uname -a Linux m01 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux安装ansible
[root@m01 ~]yum repolist # 查看是否有相应epel源,安装ansible需要epel源 [root@m01 ~]yum install -y ansible [root@m01 ~]#rpm -qa ansible ansible-2.8.1-1.el7.noarch # ansible版本 2.1 ansible语法格式ansible 管理主机信息 -m 模块名称 -a "操作动作"
2.2 ansible主要配置文件
官方资料: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
配置文件
ansible配置文件
vi /etc/ansible/ansible.cfg #ansible_become=True --- 开启用户切换功能 #ansible_become_method=sudo --- 使用什么方式切换用户权限 su / sudo #ansible_become_user=root --- 默认切换成什么用户 #ansible_become_ask_pass=false --- 是否使用密码认证 2.3 ansible主机清单配置 ansible_become 开启用户sudo或su功能ansible_become_method 选择获取权限的方式 su / sudo
ansible_become_user 指定切换成什么用户操作
ansible_become_password 实现设置su或者sudo密码信息
2.3.1 方法一:编写远程主机地址信息 [root@m01 ~]#vim /etc/ansible/hosts # 最后面添加IP地址 172.16.1.7 172.16.1.31 172.16.1.41
命令检测
所有IP地址可以用 all 来代替
也可以用逗号隔开IP地址
[root@m01 ~]#ansible 172.16.1.31,172.16.1.41,172.16.1.7 -m command -a "hostname" 172.16.1.7 | CHANGED | rc=0 >> web01 172.16.1.31 | CHANGED | rc=0 >> nfs01 172.16.1.41 | CHANGED | rc=0 >> backup 2.3.2 方法二:编写服务内置变量信息编写服务内置变量信息
ansible_port=xxx --- 指定远程服务端口号 ansible_password=xxx --- 指定远程服务密码信息 ansible_user=xxx --- 指定以什么用户远程连接主机 ansible_host=xxx --- 指定远程主机地址信息和名称做映射,XXX=ip地址