前言
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_vars
和group_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
网友评论