ansible的脚本:playbook剧本
脚本的作用:复用
playbook的组成部分
1、开头 ---:表示是一个yaml文件,但是可以忽略。
2、Tasks(任务):包含了目标主机上执行的操作,操作还是由模板来执行。每一个任务都是一个ansible的模块调用的系统名,操作管理等等。
3、variables(变量):存储和传递数据,可以自定义变量,在playbook中变量都是全局的。
4、templates模板:用于生成配置文件,可以在ansible当中定义好变量和属性直接传给配置文件。
5、handlers处理器:满足条件时,进行触发的操作,通常用在任务重发生"change",可以触发这个处理器,一般是用处理器来对服务进行重启。
6、roles角色:是一种组织和封装playbooks的方式,类似docker-compose。
一般
配置脚本文件,安装软件,开启并设置开机自启以及修改访问页
检查脚本文件语法
检查脚本中的任务数
检查脚本中目标主机
运行脚本
从指定任务开始执行
传参
内部传参创建用户
外部传参创建用户
条件判断
1、给IP地址是192.168.254.41的主机打印输出"判断位置"
2、给IP地址是192.168.254.41的主机下载nginx,修改访问页并设置重启
循环
1、 with_items
2、 with_list:每组列表就会一起循环输出
3、with together:同一列表位置数据组合输出的循环
4、with_nested:列表数据循环配置的循环
三种传参进行循环遍历的方式
标签tags
ansible中相当于标签,在执行playbook的时候指定标签来运行我们需要的tasks。
1、debug:调式,调式的结果不会写入到目标主机。
2、always:始终会运行的任务
3、setup:收集主机信息
4、pre_tasks:在主任务之前运行的任务
5、post_tasks:在主任务之后运行的任务
6、自定义标签
7、never:这个任务永远不运行
如我们使用上面的first.yml脚本文件,创建4个标签
只执行zw1标签部分执行
只执行从test2标签到test4标签部分执行
跳过zw1标签部分执行
jinja模块
jinja是基于python的模块引擎,可以把模板看做一个编译过的文件,这个文件可以直接生产目标文件,用定义好的变量替换模版中的标记位。
首先准备好nginx的模板配置文件nginx.conf.j2(jinja模块文件的默认后缀名)
在配置文件/etc/ansible/hosts设置好要传参的参数
配置脚本文件,启用模板
运行脚本后,我们在41和14两个主机上可以看出模板生效