1.tag标签(调试)

--skip-tags install_nfs 跳过此标签

-t 指定标签名

[root@manager tasks]# cat task_nfs.yml
- hosts: webservers
tasks: #对一个任务打多个标签
- name: Install Nfs Server
yum:
name: nfs-utils
state: present
tags:
- install_nfs
- install_nfs-server #对一个任务打一个标签
- name: Service Nfs Server
service:
name: nfs-server
state: started
enabled: yes
tags: start_nfs-server ansible-playbook -i ../hosts task_nfs.yml -t start_nfs-server123
ansible-playbook -i ../hosts task_nfs.yml --skip-tags install_nfs-server

2.include包含

[root@manager tasks]# cat restart_nginx.yml
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted [root@manager tasks]# cat a_project.yml
- hosts: webservers
tasks: - name: A Project command
command: echo "A" - name: Restart nginx
include: ./restart_nginx.yml [root@manager tasks]# cat b_project.yml
- hosts: webservers
tasks: - name: B Project command
command: echo "B" - name: Restart nginx
include: ./restart_nginx.yml

3.错误处理 ignore_errors: yes

[root@manager tasks]# cat task_ignore.yml
- hosts: webservers
tasks: #明确知道该TASK可能会报错,及时报错也希望不影响后续的TASK任务时
- name: Ignore False
command: /bin/false
ignore_errors: yes - name: touch new file
file: path=/tmp/bgx_ignore state=touch changed_when: false --->针对shell命令
force_handlers: yes --->强行调用handlers

4.异常处理

1.每次状态都是changed,纵使没有修改过被控端

        #Check_Redis_Status=$(netstat -lntp | grep redis)
- name: Check Redis Status
shell: netstat -lntp | grep redis
register: Check_Redis_Status
changed_when: false #echo ${Check_Redis_Status}
- name: Debug Check_Redis Variables
debug:
msg: "Redis Status: {{ Check_Redis_Status.stdout_lines }}"

2.nginx推送配置文件后,没有任何的检查功能

###low版
[root@manager tasks]# cat task_nginx.yml
- hosts: webservers
tasks: #安装nginx
- name: Installed nginx Server
yum:
name: nginx
state: present #配置nginx
- name: Configure nginx Server
template:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf #检查nginx (Check_Nginx_Status=$(nginx -t))
- name: Check Nginx Configure File
shell: nginx -t
register: Check_Nginx_Status
ignore_errors: yes
changed_when: false #启动Nginx
- name: Systemd Nginx Server
systemd:
name: nginx
state: started
enabled: yes
when: ( Check_Nginx_Status.rc == 0 ) #只有Check_Nginx_Status.rc=0时,才会执行启动操作 #####new版
[root@manager tasks]# cat task_nginx.yml
- hosts: webservers
tasks:
#安装nginx
- name: Installed nginx Server
yum:
name: nginx
state: present #配置nginx
- name: Configure nginx Server
template:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf #检查nginx (Check_Nginx_Status=$(nginx -t))
- name: Check Nginx Configure File
shell: nginx -t
register: Check_Nginx_Status
changed_when:
- Check_Nginx_Status.stdout.find('successful')
- false #启动Nginx
- name: Systemd Nginx Server
systemd:
name: nginx
state: started
enabled: yes ###new版
[root@manager tasks]# cat task_nginx.yml
- hosts: webservers
tasks:
#安装nginx
- name: Installed nginx Server
yum:
name: nginx
state: present #配置nginx
- name: Configure nginx Server
template:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf #检查nginx (Check_Nginx_Status=$(nginx -t))
- name: Check Nginx Configure File
shell: nginx -t #启动Nginx
- name: Systemd Nginx Server
systemd:
name: nginx
state: started
enabled: yes

3.强制调用handlers 触发器

[root@manager tasks]# cat task_nginx.yml
- hosts: webservers
force_handlers: yes #无论tasks失败与否,只要通过过handlers,那me一定会执行
tasks:
#安装nginx
- name: Installed nginx Server
yum:
name: nginx
state: present #配置nginx
- name: Configure nginx Server
template:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Restart Nginx Server #检查nginx (Check_Nginx_Status=$(nginx -t))
- name: Check Nginx Configure File
shell: nginx -t #启动Nginx
- name: Systemd Nginx Server
systemd:
name: nginx
state: started
enabled: yes handlers:
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted

总结: Ansible Task 控制

  • 1.判断语句 when
  • 2.循环语句 with_items
  • 3.触发器 handlers
  • 4.标签 tag
  • 5.忽略错误 ignore_errors
  • 6.异常处理
    • 1.关闭TASK的changed状态 -->让该TASK一直处理OK状态 changed_when: false
    • 2.强制调用handlers: 当正常task调用过handlers,则无论后续的task成功还是失败,都会调用handlers触发器执行任务.
    • 3........ Check_Nginx_Status.stdout.find('successful')

4.Ansible Task控制的更多相关文章

  1. ansible基础-task控制

    1. 前言 很多情况下,一个play是否执行会依赖于某个(些)变量的值,这个变量可以来自自定义变量.facts,甚至是另一个task的执行结果. ansible通过变量判定task是否执行,我们称之为 ...

  2. ansible 流程控制

    ansible 流程控制 使用when判断主机名 - hosts: rsync_server tasks: - name: Install rsyncd Server yum: name: rsync ...

  3. Ansible--04 ansible 流程控制

    ansible 流程控制 playbook 条件语句 不管是 shell 还是各大编程预言中,流程控制,条件判断都是必不可少的,在我们使用 Ansible的过程中,条件判断的使用频率都非常高. 例如: ...

  4. Ansible流程控制

    Ansible流程控制 数据库操作问题: 数据库的操作问题,python需要依耐的模块MySQL-python . 数据库的操作 # 设置root的密码在,root的密码设置之后,创建用户和创建数据库 ...

  5. Ansible_自动化运维《Ansible之初识-1》

    1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  6. Ansible系列(六):各种变量定义方式和变量引用

    本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设 ...

  7. ansible基础-理解篇

    1. 介绍 要说现在的部署工具,ansible可以说家喻户晓了. ansible是一个开源软件,用于软件供应.配置管理.应用部署.ansible可以通过SSH.remote PowerShell.其他 ...

  8. ansible 自动化管理

    1 什么样的情形需要批量部署 1.操作系统的安装 常见的有collber,red hat satelite(redhat)系统专用. 2.操作系统的配置 常见的有cfengine,puppet,che ...

  9. Ansible系列(五):各种变量定义方式和变量引用

    Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.1 ansible facts facts组件是用来收集被管理节点信息的 ...

随机推荐

  1. 【LiteOS】LiteOS移植常见问题

    发现很多人在LiteOS的移植过程中总会遇到一些问题,现在简单做一些总结.后续有新的问题提再继续补充. 1.CMSIS版本导致的问题 问题现象一般如下图所示,编译后报错,Undefined symbo ...

  2. Java修炼——手写服务器项目

    项目工程总览: 1.Dispatcher类(一个请求与响应就是一个Dispatcher) package com.bjsxt.server; import java.io.IOException; i ...

  3. maven与ecplise的整合

    Maven 概念: Maven 使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理工 ...

  4. [TimLinux] django aggregate和annotate示例

    1. 聚合与注解 聚合(aggregate)比较好理解,注解(annotate)真不好理解,这篇示例参考了文章“django中聚合aggregate和annotate GROUP BY的使用方法”提供 ...

  5. Win32_PhysicalMedia 硬盘 参数说明

    Caption 物理内存还虚拟内存 Description 描述和Caption一样 InstallDate 安装日期(无值) Name 名字 Status 状态 CreationClassName ...

  6. art-template与swiper发生冲突导致swiper的一些样式不起作用

    我们在实际中的前后端分离开发中,在进行渲染后端返回来的数据时我们有时会用到模板来进行渲染数据,而在渲染数据中我们可能用到一些组件来进行一些样式显示.而在页面中数据显示了导致组件的一些样式没有显示,一些 ...

  7. Java中的两种异常类型是什么?他们有什么区别?

    一.Throwable是所有异常的根,java.lang.Throwable Error是错误,java.lang.Error Exception是异常,java.lang.Exception 二.E ...

  8. 如何在Android手机上进行自动化测试(下)

    版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 通过阅读本篇教程,你将会了解到: 如何使用Poco对Android原生应用进行测试 Poco支持直接对任何Android原生应 ...

  9. CCF-CSP题解 201509-4 高速公路

    有点忧愁.\(CSP\)也考\(Tarjan\)缩点的嘛. 原理咱也不明白,咱也不敢学,找到模板就是抄. #include<bits/stdc++.h> const int maxn = ...

  10. pip和conda添加国内清华镜像源(亲测有效)

    文章目录 pip和conda 添加国内清华镜像 1. pip源更改: 2. conda源更改: pip和conda 添加国内清华镜像 python模块安装,使用国内源可以提高下载速度. 1. pip源 ...