Ansible 相关概念
Ansible相关概念
Control node 主控端
任何装有Ansible的机器都可以被称为主控端。主控端通过分别通过ansible和ansible-playbook命令执行命令或剧本。
Managed nodes 受控端
被控端指通过Ansible管理的网络设备或服务器。受控端不需要安装Ansible。
Inventory 主机清单
受控端列表。设备信息必须预先存储在清单,否则Ansible无法对其进行控制。
Modules 模块
Ansible的最小执行单元。模块用于执行不同类型的命令。
Tasks 任务
Ansible中的基本动作单元。一个任务的目标就是执行一条临时命令(ad-hoc command)。
Playbooks 剧本
剧本包括变量和任务。剧本采用YAML编写,可以执行一系列有序任务。
Ansible 任务模式
Ad-hoc模式
点对点模式,使用单个模块,对一台或多台主机,执行单条命令。
ansible 10.22.0.51 -a 'netstat -ulntp'ansible 10.22.0.51 -a 'shutdown -r now'ansible 10.22.0.51 -a 'uptime'ansible all -a 'uptime'
playbook模式
剧本模式,多个task集合完成一类功能,如Web服务的批量安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。
比如下方剧本配置了两条任务,共同完成安装并运行mysql服务这个运维目标
---# 安装并运行mysql服务- hosts: node1 remote_user: root tasks: - name: install mysql-server package apt: name=mysql-server state=present - name: starting mysqld service service: name=mysql state=started
Ansible工作过程
加载配置文件:
查找对应的主机配置文件,找到要执行的主机或者组;
加载模块文件,如 command;
通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至被控服务器;
执行被控主机的
~/.ansible/tmp/XXX/XXX.py文件;
给文件 +x 执行权限;
执行并返回结果;
删除临时py文件,退出进程;
查看生成的缓存py文件
ansible 192.168.10.99 -m shell -a 'ls ~/.ansible/tmp | sleep 3 | cp -r ~/.ansible/ /tmp/' -k