Ansible基础

119 阅读2分钟

Ansible介绍

Ansible是基于Python开发的自动化运维工具,可以实现批量的系统配置,服务部署等功能。Ansible批量部署不需要在远程主机上安装client/agent,ansible管理端与被管理端通过ssh进行通讯。ansible提高工作的效率,提高工作准确度,减少维护的成本,减少重复性工作。

ansible结构图.jfif 如上图所示,ansible由Ansible、CoreModules、HostInventory、Playbooks、CustomModels和ConnectionPlugins等主要模块。

Ansible:Ansible核心程序 HostInventory:Ansible管理的主机信息 Playbooks:"剧本",YMAL格式文件,多个任务定义在一个文件中。 CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务 CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。 ConnectionPlugins:连接插件,Ansible和Host通信使用。

Ansible命令执行过程

  • 加载自己的配置文件 默认为/etc/ansible/ansible.cfg
  • 查找对应的主机配置文件,找到要执行的主机或组
  • 加载自己对应的模块文件,如command模块
  • 通过ansible将模块或命令生成对应的临时py文件,并将文件传输给远程服务器
  • 对应执行用户的家目录的.ansible/tmp/xxx/xxx.py文件
  • 给文件执行权限
  • 执行并返回结果
  • 删除零食py文件,sleep 0退出

Ansible任务执行

ansible任务执行有两种模式,ad-hoc模式和playbook模式。

  • ad-hoc模式(点对点模式)

    使用单个模块,支持批量执行单条命令。相当于bash中的一句话shell

  • playbook模式

    playbook是ansible的主要管理方式,playbook通过多个task集合完成一类功能。

Ansible配置文件

ansible的配置文件为/etc/ansible/ansible.cfg

[defaults]

# some basic default values...

inventory      = /etc/ansible/hosts      #主机文件
library        = /usr/share/my_modules/  #ansible模块文件
forks          = 5                       #并发连接数    
sudo_user      = root                    #默认执行命令用户
remote_port    = 22                      #被管理端端口