在搞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. AngularJS实现地址栏取值

    有时候我们由如下需求 1.从a.html跳转到b.html 2.从a跳转时携带参数和值. 3.从b.html中取出传过来的参数值 在AngularJS的操作如下 在a.html中添加 <a hr ...

  2. Linux 查看文件权限命令ls -l 输出信息每列所代表的含义

  3. docker安装 与 基本配置

    1.安装docker #yum remove docker \ docker-common \ container-selinux \ docker-selinux \ docker-engine \ ...

  4. QPS/TPS的预估

    先说标准概念: TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数.TPS包括一条消息入和一条消息出,加上一次用户数据库访问.(业务TPS = ...

  5. 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密

    使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...

  6. odoo开发笔记 -- related用法

    related:字面意思-关联字段,表示本字段引用关联表中的某字段. 格式为:fields.related(关系字段,引用字段,type,relation,string,...),关系字段是本对象的某 ...

  7. 【WPF】通过修改dataGrid的cell的style,改变选中行失去焦点时的颜色

    <Style TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Proper ...

  8. k8s记录-国内下载k8s组件镜像

    #!/bin/sh ### 版本信息 K8S_VERSION=v1.13.2 ETCD_VERSION=3.2.24 DASHBOARD_VERSION=v1.8.3 FLANNEL_VERSION= ...

  9. 在 Python 中使用定时器

    今天看到一个比较人性化的定时模块 schedule,目前 star 数为 6432,还是非常的受欢迎,这个模块也是秉承这 For Humans 的原则,这里推荐给大家.地址 https://githu ...

  10. [Metricbeat] Metricbeat监控golang服务器

    0x0 前言 最近这几天研究了一下ElasticSearch相关的技术栈.前面一篇转发了别人些的非常详细的ElasticSearch和Kibana搭建的过程.发现Elastic家族还有Metricbe ...