ansible笔记(11):初识ansible playbook(二)
参考:http://www.zsythink.net/archives/2613
前文中,我们已经编写了 一个简单的剧本,这篇文章继续了解一下playbook的一些基础。
有前文作为基础,如下示例是非常容易理解的:
1 2 3 4 5 6 7 8 9 | --- - hosts: test70 remote_user: root tasks: - name: make testfile file: path: /testdir/testfile state: touch mode: 0700 |
上例中有一个play,这个play针对test70主机运行,这个play的任务列表中只有一个任务,这个任务就是调用file模块,确保/testdir/testfile文件存在并且testfile文件的权限为0700,把上例中的任务列表部分单独截取出来,如下所示
1 2 3 4 5 6 | tasks: - name: make testfile file: path: /testdir/testfile state: touch mode: 0700 |
正如你所看到的,"path: /testdir/testfile" 表示为file模块的path参数赋值,我们使用"冒号"(冒号后有空格)对参数赋值。
其实,除了这种使用冒号的方式,我们还可以使用如下格式为模块的参数赋值
1 2 3 | tasks: - name: make testfile file: path=/testdir/testfile state=touch mode=0700 |
如上所示,我们调用file模块时,设置了三个参数,path参数、state参数、mode参数,为参数赋值时,使用了"等号",每个参数之间使用空格隔开,这种格式也是完全正确的,如果你在使用一个模块时设置的参数比较多,那么使用上述格式设置参数时,这些参数可能会"挤在一行"里面,你也可以把它们分成多行去写,如下例所示
1 2 3 4 | tasks: - name: make testfile file: path=/testdir/testfile state=touch mode=0700 |
如上例所示,使用action关键字调用对应的模块,在当前版本中(博客中的ansible版本为2.4)仍然兼容这种语法
在之前的示例中,我们对每个任务都指定了对应的名称,即每个task都有对应的name,当我们省略name时,默认以当前任务调用的模块的名称作为任务的名称,不过建议不要省略name,因为当任务存在name时,可读性比较高。
在编写任务时,我习惯将name属性写在任务的开头,当然,任务的各个属性并没有严格的顺序要求,如下两种写法的效果是相同的。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 写法一: tasks: - name: make testfile file: path=/testdir/testfile state=touch mode=0700 写法二: tasks: - file: path=/testdir/testfile state=touch mode=0700 name: make testfile |
各属性顺序虽然没有要求,但是仍然需要严格按照缩进进行对齐。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-09-30 ELK之es常用查询语句