ansible学习笔记4-playbooks之task

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible学习笔记4-playbooks之task相关的知识,希望对你有一定的参考价值。

Task列表


每个play包含了一个task列表(任务列表)一个task在其所在对应的所有主机

上(通过host pattern匹配的所有主机)执行完毕之后,下一个task才会执行

有一点需要明白的是,在一个play之中,所有hosts会获取相同的任务指令,

这是play的一个目的所在,也就是将一组选出的hosts映射到task


在运行playbook时,如果一个host执行task是吧,这个host将会从整个playbook

的rotation中移除,如果发生执行失败的情况,请修正playbook中的错误,然后

重新执行即可


每个task的目标在于执行一个moudle,通常是带有特定的参数来执行,在参数中

可以使用变量


modules具有幂等性,意思是如果你再一次执行moudle,只会执行必要的改动,

只会改变需要改变的地方,所以重复多次执行playbook也很安全


对于command module和shell module重复执行playbook,实际上是重复运行同样的命令

如果执行的命令类似于chmod或者setsebool这种命令,这没有任何问题,也可以使用

一个叫做creates的flag是的这两个module变得具有幂等特性


每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息

中可以很好地辨别出是属于哪个task的,如果没有定义name,action的值将会用作

输出信息中标记特定的task


如果要声明一个task,以前有一种格式:action:module options,现在推荐使用

更常见的格式module:option


下面是一种基本的task的定义,service module使用key=value格式的参数,这也

是大多数module使用的参数格式


tasks:

    - name: make sure apache is running

 service: name=httpd state=running


比较特别的两个modudle是command和shell,他们不使用key=value格式的参数


tasks:

    - name: disable selinux

command: /sbin/setenforce 0

使用command module和shell module时,我们需要关心返回码信息,如果有一

条命令,它成功执行的返回码不是0,你或许希望这样


tasks:

    - name: run this command and ignore the result

 shell: /usr/bin/somecommand || /bin/true

或者是这样

tasks:

    - name: run this command and ignore the result

 shell: /usr/bin/somecommand

 ignore_errors: True

 

如果action行看起来太长,可以用空格或者缩进隔开连续行


在action行中可以使用变量,建设在vars那里定义了一个变量vhost,可以

这样使用


tasks:

    - name: create a virtual host file for {{ vhost }}

      template: src=somefile.j2 dest=/etc/httpd/conf.d/{{vhost}}


  


本文出自 “八英里” 博客,谢绝转载!

以上是关于ansible学习笔记4-playbooks之task的主要内容,如果未能解决你的问题,请参考以下文章

ansible学习笔记9-playbooks之include

ansible学习笔记5-playbooks之handlers

Ansible 学习笔记

ansible学习笔记

第20章,运维自动化之ansible

我的Ansible学习笔记