ansible debugger 模块
在搞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 模块的更多相关文章
- ansible服务模块和组模块使用
本篇文章主要是介绍ansible服务模块和组模块的使用. 主要模块为ansible service module和ansible group moudle,下面的内容均是通过实践得到,可以直接运行相关 ...
- ansible常用模块用法
ansible常用模块用法 2015-07-21 10:25 24458人阅读 评论(1) 收藏 举报 分类: Linux(44) ansible 版权声明:本文为博主原创文章,未经博主允许不得 ...
- Linux之ansible 常用模块
目的 代码发布系统 代码发布:把本地的代码通过某些方式弄到线上,可以供别人访问 部署 前戏 ansible 批量在远程主机上执行命令 puppet ruby ansible saltstack pyt ...
- Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...
- Ansible常用模块命令
Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...
- ansible 常用模块的使用
安装 yum -y install ansible 配置文件/etc/ansible/hosts 模块介绍与使用 ping模块 [root@node1 config]# ansible k8s -m ...
- Ansible 常见模块介绍
目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...
- Ansible 常用模块(一)
一.Ansible简介 Ansible是新出现的自动化运维工具,基于python开发,集合了众多运维工具(puppet(ruby).cfengine.chef.func.fabric.)的优点,实现了 ...
- ansible核心模块playbook介绍
ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...
随机推荐
- shell 脚本接收参数
test.sh #!/bin/bash echo "脚本名$0" echo "第1个参数$1" echo "第2个参数$2" echo &q ...
- Nexus OSS私服仓库的备份与迁移
背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...
- PHP系列 | PHPexcel导入xls格式 ,提示错误:iconv(): Wrong charset, conversion from `CP936' to `UTF-8' is not allowed
导入xls格式(2003版本)时会报错提示错误信息 iconv(): Wrong charset, conversion from `CP936' to `UTF-8' is not allowed[ ...
- jQuery-webcam使用
基本页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta ...
- [转]JsonCpp遍历json
#include "json.h" typedef Json::Writer JsonWriter; typedef Json::Reader JsonReader; typede ...
- libmodbus学习笔记
libmodbus功能: a fast and portable Modbus library 库下载地址https://libmodbus.org 使用指南1)包含头文件#include <m ...
- awk:for循环输出文件名
简单来说,有file1.txt, file2.txt, file3.txt file1.txt如下: 1 a 4 d d g file2.txt如下: 2 b g 6 9 0 file3.txt如下: ...
- Elasticsearch学习笔记——索引模板
在索引模板里面,date类型的字段的format支持多种类型,在es中全部会转换成long类型进行存储,参考 https://zhuanlan.zhihu.com/p/34240906 一个索引模板范 ...
- python对不同类型文件(doc,txt,pdf)的字符查找
python对不同类型文件的字符查找 TXT文件: def txt_handler(self, f_name, find_str): """ 处理txt文件 :param ...
- ABP .NETCore更新数据库时一直连接的之前数据库
使用Update-Database -Verbose更新数据库时,在appsettings.json配置文件中已修改为新的连接字符串,但是使用命令更新数据库时仍然连接的是之前的数据库. 后来把代码移至 ...