java技术资料

mac上通过ansible来管理服务器

2017-12-24  本文已影响1564人  LOC_Thomas

前言

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

学习

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

上一篇 下一篇

猜你喜欢

热点阅读