Loading... <blockquote>在本博客中,ansible是一个系列文章,我们会尽量以通俗易懂的方式总结ansible的相关知识点。 ansible系列博文直达链接:<a href="https://www.zsythink.net/archives/tag/ansible/" target="_blank" rel="noopener">ansible轻松入门系列</a> “ansible系列”中的每篇文章都建立在前文的基础之上,所以,请按照顺序阅读这些文章,否则有可能在阅读中遇到障碍。</blockquote> 前文中,我们已经编写了 一个简单的剧本,这篇文章继续了解一下playbook的一些基础。 有前文作为基础,如下示例是非常容易理解的: <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">---</span></div> </div> <div class=""> <div><span class="enlighter-text">- hosts: test70</span></div> </div> <div class=""> <div><span class="enlighter-text"> remote_user: root</span></div> </div> <div class=""> <div><span class="enlighter-text"> tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text"> - name: make testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> file:</span></div> </div> <div class=""> <div><span class="enlighter-text"> path: /testdir/testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> state: touch</span></div> </div> <div class=""> <div><span class="enlighter-text"> mode: </span><span class="enlighter-n4">0700</span></div> </div> </div> </div> 上例中有一个play,这个play针对test70主机运行,这个play的任务列表中只有一个任务,这个任务就是调用file模块,确保/testdir/testfile文件存在并且testfile文件的权限为0700,把上例中的任务列表部分单独截取出来,如下所示 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text">- name: make testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> file:</span></div> </div> <div class=""> <div><span class="enlighter-text"> path: /testdir/testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> state: touch</span></div> </div> <div class=""> <div><span class="enlighter-text"> mode: </span><span class="enlighter-n4">0700</span></div> </div> </div> </div> 正如你所看到的,”path: /testdir/testfile” 表示为file模块的path参数赋值,我们使用”冒号”(冒号后有空格)对参数赋值。 其实,除了这种使用冒号的方式,我们还可以使用如下格式为模块的参数赋值 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text">- name: make testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> file: path=/testdir/testfile state=touch mode=</span><span class="enlighter-n4">0700</span></div> </div> </div> </div> 如上所示,我们调用file模块时,设置了三个参数,path参数、state参数、mode参数,为参数赋值时,使用了”等号”,每个参数之间使用空格隔开,这种格式也是完全正确的,如果你在使用一个模块时设置的参数比较多,那么使用上述格式设置参数时,这些参数可能会”挤在一行”里面,你也可以把它们分成多行去写,如下例所示 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text">- name: make testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> file: path=/testdir/testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> state=touch mode=</span><span class="enlighter-n4">0700</span></div> </div> </div> </div> 即使把多个参数分行写,也需要注意缩进。 上述书写格式都是0.8版本以后的ansible推荐的书写格式,在0.8版本之前,使用action关键字调用模块,示例如下: <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text">- name: make testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> action: file path=/testdir/testfile state=touch mode=</span><span class="enlighter-n4">0700</span></div> </div> </div> </div> 如上例所示,使用action关键字调用对应的模块,在当前版本中(博客中的ansible版本为2.4)仍然兼容这种语法 在之前的示例中,我们对每个任务都指定了对应的名称,即每个task都有对应的name,当我们省略name时,默认以当前任务调用的模块的名称作为任务的名称,不过建议不要省略name,因为当任务存在name时,可读性比较高。 在编写任务时,我习惯将name属性写在任务的开头,当然,任务的各个属性并没有严格的顺序要求,如下两种写法的效果是相同的。 <div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-overflow-scroll"> <div class="enlighter-toolbar"> <div class="enlighter-btn enlighter-btn-raw"></div> <div class="enlighter-btn enlighter-btn-copy"></div> <div class="enlighter-btn enlighter-btn-window"></div> </div> <div class="enlighter"> <div class=""> <div><span class="enlighter-text">写法一:</span></div> </div> <div class=""> <div><span class="enlighter-text">tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text">- name: make testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> file: path=/testdir/testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> state=touch</span></div> </div> <div class=""> <div><span class="enlighter-text"> mode=</span><span class="enlighter-n4">0700</span></div> </div> <div class=""> <div></div> </div> <div class=""> <div><span class="enlighter-text">写法二:</span></div> </div> <div class=""> <div><span class="enlighter-text">tasks:</span></div> </div> <div class=""> <div><span class="enlighter-text">- file: path=/testdir/testfile</span></div> </div> <div class=""> <div><span class="enlighter-text"> state=touch</span></div> </div> <div class=""> <div><span class="enlighter-text"> mode=</span><span class="enlighter-n4">0700</span></div> </div> <div class=""> <div><span class="enlighter-text"> name: make testfile</span></div> </div> </div> </div> 各属性顺序虽然没有要求,但是仍然需要严格按照缩进进行对齐。 关于这些基础,就先暂时总结到这里,希望能够对你有所帮助。 转载自朱双印日志https://www.zsythink.net/archives/2613 Last modification:May 29, 2024 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏