在搞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. pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/local/share/tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata"

    pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/local/share/tessdata/chi_s ...

  2. WDM驱动改可手动加卸载的NT驱动

    WDM驱动改可手动加卸载的NT驱动 测试工具:osrloader 把一个WDM类型的驱动改成可动态加载/卸载,需要做以下2个修改: 1. 把SOURCES文件夹中的DRIVERTYPE=WDM去掉 2 ...

  3. git 相关流程和报错解决

    git 相关流程: 预先配置: gitroot $ git config user.name XXXgitroot $ git config user.email XXX@XXX.com git re ...

  4. jdk 6-13最有价值新特性总结

    355: Text Blocks (Preview) JDK 13的特性.简化了大段文本的换行,例如sql或xml段. Shenandoah GC. jdk 12作为实验特性引入. JEP330-启动 ...

  5. patchUpload.vue?5e29:406 Uncaught (in promise) DOMException: Failed to execute 'readAsArrayBuffer' on 'FileReader': The object is already busy reading Blobs.

    patchUpload.vue?5e29:406 Uncaught (in promise) DOMException: Failed to execute 'readAsArrayBuffer' o ...

  6. CentOS7下安装ELK(nginx 、elasticsearch-5.1.1、logstash-5.1.1、kibana-5.1.1)

    nginx: #直接yum安装: [root@elk-node1 ~]# yum install nginx -y 官方文档:http://nginx.org/en/docs/http/ngx_htt ...

  7. win10系统许可证即将过期的解决方法

    相信很多朋友在使用win10系统过程中,都遇到过系统提示windows许可证即将过期的问题,win10系统许可证即将过期怎么办?我们只需要重新激活即可.以下方法可以参考,不足之处多多指正!   工具/ ...

  8. (.Net) NLog 记录日志功能

    https://codeload.github.com/NLog/NLog/zip/v4.6.6 https://nlog-project.org/?r=redirect Logger logger ...

  9. 如何将本地jar包放入本地maven仓库和远程私服仓库

    1.将本地jar包放入本地仓库.只需执行如下命令即可: mvn install:install-file -Dfile=D:/demo/fiber.jar -DgroupId=com.sure -Da ...

  10. Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)

    测试原理和方法 找回密码逻辑漏洞测试中也会遇到参数不可控的情况,比如要修改的用户名或者绑定 的手机号无法在提交参数时修改,服务端通过读取当前session会话来判断要修改密码的账 号,这种情况下能否对 ...