mac上通过ansible来管理服务器

前言

ansible是一款很强大的运维工具, 随着微服务和devops的加强,有效的利用ansible可以大大提高运维效率

安装

mac上安装ansible非常简单

brew instsall ansible

安装完成后,可以执行ansible --version来查看信息, 可以看到我们安装的ansible版本是2.4.2.0

配置文件

创建一个ansible的文件夹,然后添加文件ansible.cfg, 里面配置的ansible的基本配置,在这个目录下执行ansible命令, 默认是读取的这个文件里面的内,读取配置文件的顺序是:

* ansible.cfg (in the current directory)
* ANSIBLE_CONFIG (an environment variable)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

inventory目录

创建inventory目录, 里面加入hosts文件,来对机器进行管理和设置。在运行的时候 通过 ansible -i inventory 来进行指定,ansible会读取里面的hosts文件,另外可以定义 host_varsgroup_vars目录, 来根据主机和组来定义变量,使得变量更加灵活。

role.yml文件

role.yml是一个入口文件,ansible-playbook命令可以通过-e传入参数到role.yml里面,然后role.yml根据传入的参数,执行对应的roles文件夹里面的项目:
例子:
ansible-playbook -i inventory -e target=all -e role=ping role.yml
上面的命令,表示读取inventory文件夹里面的hosts,把role.yml里面的target替换成all,把role替换成ping,来进行执行。

roles目录

这个目录下面把不同的操作按子目录进行分离,通过上面的role传入的参数,选择对应名称的子目录,比如上面role=ping,则就在下面找到ping的目录,进行后续对应的操作。

后面的操作常用的主要有

  • tasks 表示执行的任务
tasks是从上到下顺序执行,如果中间发生错误,那么整个playbook会中止。你可以改修文件后,再重新执行。
每一个task的对module的一次调用。使用不同的参数和变量而已。
每一个task最好有name属性,这个是供人读的,没有实际的操作。然后会在命令行里面输出,提示用户执行情况。
  • handlers 表示相应的事件
Handlers里面的每一个handler,也是对module的一次调用。而handlers与tasks不同,tasks会默认的按定义顺序执行每一个task,handlers则不会,它需要在tasks中被调用,才有可能被执行。
Tasks中的任务都是有状态的,changed或者ok。 在Ansible中,只在task的执行状态为changed的时候,才会执行该task调用的handler,这也是handler与普通的event机制不同的地方。
  • templates 表示模版文件,模版中可以使用对应的变量,读取vars里面的变量
  • vars 表示变量文件,可以定义变量
  • files 定义文件

学习

可以通过具体的例子来进行学习, 好的学习例子就是官方提供的example
地址: https://github.com/ansible/ansible-examples

你可能感兴趣的:(mac上通过ansible来管理服务器)