ansible基本使用
标签:ansible
ansible是以款配置简单方便的自动化运维工具,基于python开放,可以实现线上主机的批量管理配置、批量应用部署。默认通过SSH协议来管理机器。
ansible安装
1 | yum install ansible |
ansible基本配置
ansible默认配置路径是在/etc/ansible下
1 | [root@localhost ansible]# tree |
配置ansible.cfg
1 | host_key_checking = False #第一次登录主机要hosts文件,禁用掉就不需要验证了 |
配置hosts
ansible基于SSH所以可以使用免密钥和用户密码方式登录
1 | [test] |
ansible模块使用
1 | [root@localhost ansible]# ansible test -m ping |
1 | [root@localhost ansible]# ansible test -m command -a "pwd" |
1 | [root@localhost ansible]# ansible test -m shell -a "ls | grep nginx" |
ansible-playbook使用
ansible-playbook是定制主机配置可以按照YAML格式的语法来定义多个任务,支持同步或异步执行
核心元素
1 | Tasks:任务,由模板定义的操作列表 |
playbook示例
1 | [root@localhost ansible]# cat firewalld.yml |
playbook规范
playbook方便了批量执行任务但是当执行脚本果断时会造成脚本过多难以管理,所以ansible-playbook定义了一套脚本管理规范
只需要将写好的模块放在roles文件中就可以直接这么写
1 |
|
我们看一下roles文件
1 | [root@localhost ansible]# tree roles |
1 | [root@localhost nginx]# cat tasks/main.yml |
这样不管在主机的任何地方主要使用引用nginx就可以实现这个模块不要重复去写,当人你也可以不放在roles目录中,你可以自定义目录
1 | [root@localhost ~]# tree test |
1 | [root@localhost test]# cat test.yml |
使用绝对路径就可以引用这个写好的模块
ansible二次开发
ansible是python写的,使用python可以直接继承ansible的类进行二次开发,当然如果嫌弃麻烦可以直接用os模块调用,这里不做演示
官方给出的API文档
1 | #!/usr/bin/env python |
网上查看资料封装修改
1 | # -*- coding: UTF-8 -*- |
封装之后就可以以直接调用了