什么是Ansible
ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。
Ansible特性
基于Python语言实现,由Paramiko,PyYAML和Jinjia2三个关键模块;
ansible是工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。
默认使用SSH协议;
(1)基于密钥认证;
(2)在inventory文件中指定账号和密码;
基于“模块”完成各种“任务”
支持自定义模块:支持各种编程语言
可以使用YAML语言定制playbook
Ansible架构图
Ansible核心组件说明:
Ansible:Ansible的核心程序
HostLnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。
Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用
CoreModules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用coreModules中的模块,然后指明管理HostLnventory中的主机,就可以完成管理主机。
CustomModules:自定义模块,完成Ansible核心模块无法完成的功能
ConnectionPlugins:连接插件,Ansible和Host通信使用
环境拓扑图
安装Ansible
Ansible在epel的yum中有提供,所以配置好epel源,直接使用yum命令安装即可
[root
node1~]#yum-yinstallansible查看生成的主要文件
[root
node1~]#rpm-qlansible/etc/ansible/ansible.cfg#主配置文件/etc/ansible/hosts#invertory文件说明:Ansible不是服务,所以不需要服务脚本
配置和被管理的主机直接建立基于ssh的密钥认证
ssh-keygen-trsa-f~/.ssh/id_rsa-P"ssh-copy-id-i.ssh/id_rsa.pub.16.4.ssh-copy-id-i.ssh/id_rsa.pub.16.4.ssh-copy-id-i.ssh/id_rsa.pub.16.4.
定义主机,将所有被管理的主机加入到/etc/ansible/hosts中,否则无法管理
[root
node1~]#vim/etc/ansible/hosts[webserver]#定义一个组.16.4..16.4.[dbserver].16.4.补充:如果没有设置基于ssh的密钥认证,可以在hosts文件中直接指定帐号和密码,方法如下所示:
[webserver].16.4.ansible_ssh_user=rootansible_ssh_pass=password.16.4.ansible_ssh_user=rootansible_ssh_pass=password[dbserver].16.4.ansible_ssh_user=rootansible_ssh_pass=password
模块使用:
如何查看模块帮助:
ansible-doc-l#查看所有模块
ansible-doc-sMODULE_NAME#查看指定模块的详细帮助
ansible命令应用基础:
语法:ansiblehost-pattern[-fforks][-mmodule_name][-aargs]
-fforks:启动的并发线程数;
-mmodule_name:要使用的模块;
-aargs:模块特有的参数;
常见模块说明:
Command
功能:命令模块,默认模块,用于在远程主机执行命令,缺点:运行的命令中无法使用变量,管道。
[root
node1~]#ansible-doc-s