在搞TF(tungstenfabric)时遇到了一些错误,TF通过ansible playbook 来部署的。通常情况下遇到错误都是通过ansibale xxxx –vvv 来详细输出一下。出错的类型如果使某个命令或者代码 还是比较好处理的。如果错误是一个运行中获取的变量就比较麻烦,因为你也不知道应该是什么或者当前的值是什么如果可以动态调试就好好办了。debugger模块就是干这个事情的

debugger模块参数值

always:

无论结果如何,始终调用调试器

never:

无论结果如何,都不要调用调试器

on_failed:

仅在任务失败时才调用调试器

on_unreachable:

仅当主机不可访问时才调用调试器

on_skipped:

仅当跳过任务时才调用调试器

调试测试

  1 ---
2 - name: Ensuring config directories exist
3 debugger: always  #debugger关键字:出发debug条件
4 file:
5 path: "{{ node_config_directory }}/{{ item }}"
6 state: "directory"
7 owner: "{{ config_owner_user }}"
8 group: "{{ config_owner_group }}"
9 mode: "0770"
10 become: true
11 with_items:
12 - "memcached"

开始跑playbook

查看当前执行的TASK任务

TASK [memcached : include_tasks] *******************************************************************

included: /root/deploy/contrail-kolla-ansible/ansible/roles/memcached/tasks/config.yml for 10.49.252.201

TASK [memcached : Ensuring config directories exist] ***********************************************

ok: [10.49.252.201] => (item=memcached)

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> task

TASK: memcached : Ensuring config directories exist

查看当前TASK需要的变量

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> p task.args

{u'group': u'{{ config_owner_group }}',
  u'mode': u'0770',
  u'owner': u'{{ config_owner_user }}',
  u'path': u'{{ node_config_directory }}/{{ item }}',
  u'state': u'directory'}

红色的就是动态获取的变量

获取指定变量(p task_vars['config_own  er_group'])

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> p task_vars['config_own  er_group']

u'root'

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> p task_vars['node_confi  g_directory']

u'/etc/kolla/{{ project }}'

获取所有的动态变量,我这里会有很多只截取部分

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> p task_vars

{u'TSN_EVPN_MODE': False,
  u'action': u'deploy',
  u'admin_protocol': u'http',
  u'analytics_api_ssl_enable': False,
  u'ansible_all_ipv4_addresses': [u'10.49.252.201',
                                  u'192.168.100.1',
                                  u'172.17.0.1'],

………………………………………………….

获取当前task运行结果

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> p result._result

{'changed': False,
  'msg': u'All items completed',
  'results': [{'_ansible_ignore_errors': None,
               '_ansible_item_result': True,
               '_ansible_no_log': False,
               '_ansible_parsed': True,
               u'changed': False,
               u'diff': {u'after': {u'path': u'/etc/kolla//memcached'},
                         u'before': {u'path': u'/etc/kolla//memcached'}},
               'failed': False,
               u'gid': 0,
               u'group': u'root',
               u'invocation': {u'module_args': {u'attributes': None,
                                                u'backup': None,
                                                u'content': None,
                                                u'delimiter': None,
                                                u'diff_peek': None,
                                                u'directory_mode': None,
                                                u'follow': True,
                                                u'force': False,
                                                u'group': u'root',
                                                u'mode': u'0770',
                                                u'original_basename': None,
                                                u'owner': u'root',
                                                u'path': u'/etc/kolla//memcached',
                                                u'recurse': False,
                                                u'regexp': None,
                                                u'remote_src': None,
                                                u'selevel': None,
                                                u'serole': None,
                                                u'setype': None,
                                                u'seuser': None,
                                                u'src': None,
                                                u'state': u'directory',
                                                u'unsafe_writes': None,
                                                u'validate': None}},
               'item': u'memcached',
               u'mode': u'0770',
               u'owner': u'root',
               u'path': u'/etc/kolla//memcached',
               u'secontext': u'unconfined_u:object_r:etc_t:s0',
               u'size': 6,
               u'state': u'directory',
               u'uid': 0}]}

修改key对应的值

修改变量赋值

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> task_vars['path'] = '/etc/kolla//memcached1'

我们再次查看值是否改变

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> p task_vars['path']

'/etc/kolla//memcached1

重新redo即可

[10.49.252.201] TASK: memcached : Ensuring config directories exist (debug)> redo

ok: [10.49.252.201] => (item=memcached)

ansible debugger 模块的更多相关文章

  1. ansible服务模块和组模块使用

    本篇文章主要是介绍ansible服务模块和组模块的使用. 主要模块为ansible service module和ansible group moudle,下面的内容均是通过实践得到,可以直接运行相关 ...

  2. ansible常用模块用法

    ansible常用模块用法 2015-07-21 10:25 24458人阅读 评论(1) 收藏 举报  分类: Linux(44)   ansible 版权声明:本文为博主原创文章,未经博主允许不得 ...

  3. Linux之ansible 常用模块

    目的 代码发布系统 代码发布:把本地的代码通过某些方式弄到线上,可以供别人访问 部署 前戏 ansible 批量在远程主机上执行命令 puppet ruby ansible saltstack pyt ...

  4. Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...

  5. Ansible常用模块命令

    Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...

  6. ansible 常用模块的使用

    安装 yum -y install ansible 配置文件/etc/ansible/hosts 模块介绍与使用 ping模块 [root@node1 config]# ansible k8s -m ...

  7. Ansible 常见模块介绍

    目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...

  8. Ansible 常用模块(一)

    一.Ansible简介 Ansible是新出现的自动化运维工具,基于python开发,集合了众多运维工具(puppet(ruby).cfengine.chef.func.fabric.)的优点,实现了 ...

  9. ansible核心模块playbook介绍

    ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...

随机推荐

  1. Internet地址结构

    IP地址结构及分类寻址 IP地址 = <网络号> + <主机号>            ------------IPv4(32bit)点分四组表示法: 192.168.31.1 ...

  2. limma 包

    limma:Linear Models for Microarray and RNA-Seq Data http://www.bioconductor.org/packages/release/bio ...

  3. select多选左移右移的实现

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. IIS部署Silverlight

    题设: 网站如果应用了Silverlight技术,直接部署到IIS中是无法正常运行的, 分析: 因为Silverlight应用所对应的三种MIME类型没有在IIS中注册,所以Silverlight相关 ...

  5. 阿里巴巴Druid数据源组件

    目前常用的数据源主要有c3p0.dbcp.proxool.druid,先来说说他们Spring 推荐使用dbcp:Hibernate 推荐使用c3p0和proxool1. DBCP:apacheDBC ...

  6. PHP系列 | 代码复用trait的构造函数使用

    在ThinkPHP5.1 框架中自己封装了一个 trait 类,每次都在控制器中使用,但是在使用框架自身的验证器类(框架控制器方法)报错 在控制器中使用自定义验证器 $param = $this-&g ...

  7. tornado多进程模式不同进程写不同日志

    #coding: utf- ''' Author: Time: Target: ''' import logging import logging.handlers import os import ...

  8. clickhouse 19.14.m.n简单测试

    ClickHouse is a column-oriented database management system (DBMS) for online analytical processing o ...

  9. mapdb的适用场景介绍

    对于大部分系统来说,mapdb并无太大价值,而且增加了成本.但是如果一级缓存巨大例如数以十GB级别,或占据了整个JVM的1/2以上,mapdb的价值就会体现出来.正如其官网介绍: MapDB prov ...

  10. 三句话看明白jdk收费吗

    对于从oracle下载的jdk8:JDK8u200(含)以下版本不收费. 对于从oracle下载的jdk11:JDK 11.0.0不收费,JDK 11.0.1不收费. 对于openjdk:免费 ——— ...