ansible终于有好用的调试器了--- 用AIAnsible去调试ansible playbook和role

AIAnsible极大地简化了Ansible的调试过程。你不再需要深入掌握Ansible任务的知识细节,只需了解如何运行它们即可。
特别地,当面对如kubespray或ceph-ansible这样复杂的Ansible任务时,AIAnsible的分析功能显得尤为重要。
它能够帮助你通过调试和梳理任务流程来理解这些任务。如果你希望清晰地把握这些复杂任务在集群中的执行细节,AIAnsible无疑是你的有力助手。

aiansible地址:
https://github.com/sunnycloudy/aiansible
视频教程:
b站上的教程

基本使用说明/basic usage:

:cn            设置语言为中文
:en            设置语言为英文
i              对当前执行的任务代码进行注释
ir             对当前执行的任务代码进行注释, 再分析一下运行结果, 再给出改进建议
ask            请根据当前ansible任务:回答问题
n    next      运行下一个任务
m              不再在紧接着的同一个任务处停留
c    continue  继续运行直到下一个断点
b              创建断点
p              查看已经创建的断点
d    delete    删除断点
bt             查看已经运行过哪些任务了
code           查看正在运行的任务的代码
v              用vscode打开对应文件
a    arg       查看所有参数, 或单个参数 (在任务没有被skipped的前提下)
?    help      查看使用说明
exit           退出

查看当前任务的运行结果:

Aiansible(CN) => result._result
{'msg': 'Check roles/kubespray-defaults/defaults/main.yml', '_ansible_verbose_always': True, '_ansible_no_log': False, 'changed': False}

ai提示效果/example:

默认是中文版,中文版效果:
aiansible_debug_ansible1

如果要设置成英文版:

export AIANSIBLE_LANG=EN

aiansible_debug_ansible_2

或在aiansible中用":cn"或":en"命令切换:

aiansible_debug_ansible_3

安装并开始使用 :

  • (1) 下载和安装:
  git clone https://github.com/sunnycloudy/aiansible.git
  cd aiansible
  pip install .  #=> 会生成插件目录: ~/.aiansible_plugin
  • (2) 安装依赖:
pip install  -r requirements.txt
  • (3) 创建一个:debug.cfg
[defaults]
callback_plugins = ~/.aiansible_plugin
callbacks_enabled = aiansible.py
  • (4) 设置环境变量:
# 可选的两个变量, 如果不设置就没有ai提示功能, 但依然能调试.
export OPENAI_API_URL=https://api.moonshot.cn/v1  #或者其他兼容openai的api地址
export OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx #或者其他兼容openai的key

# 在debug.cfg中配置好插件
export ANSIBLE_CONFIG=./debug.cfg
  • (5) 运行命令/run command:
ansible-playbook  xxx_playbook.yml

Demo

以调试kubespray为例:

# 先找到
kubespray/ansible.cfg

更改kubespray默认配置:

[ssh_connection]
pipelining=True
ansible_ssh_args = -o ControlMaster=auto -o ControlPersist=30m -o ConnectionAttempts=100 -o UserKnownHostsFile=/dev/null
#control_path = ~/.ssh/ansible-%%r@%%h:%%p
[defaults]
# https://github.com/ansible/ansible/issues/56930 (to ignore group names with - and .)
force_valid_group_names = ignore

host_key_checking=False
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp
fact_caching_timeout = 86400
stdout_callback = default
display_skipped_hosts = no
library = ./library
# callbacks_enabled = profile_tasks,ara_default      #<= 注释掉   (・ω・)ノ
callback_plugins = ~/.aiansible_plugin               #<=  新添加的 (。・ω・。)ノ
callbacks_enabled = aiansible.py                     #<=  新添加的 ( ・ω・ )ノ

roles_path = roles:$VIRTUAL_ENV/usr/local/share/kubespray/roles:$VIRTUAL_ENV/usr/local/share/ansible/roles:/usr/share/kubespray/roles
deprecation_warnings=False
inventory_ignore_extensions = ~, .orig, .bak, .ini, .cfg, .retry, .pyc, .pyo, .creds, .gpg
[inventory]
ignore_patterns = artifacts, credentials

运行命令/run command:

# 如果不设置就没有ai提示功能, 但依然能调试.
export OPENAI_API_URL=https://api.moonshot.cn/v1  #或者其他兼容openai的api地址
export OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx #或者其他兼容openai的key

# 开始调试:
export ANSIBLE_CONFIG=./ansible.cfg
ansible-playbook  --become  -i  inventory/mycluster/inventory.ini  cluster.yml

aiansible_debug_ansible_3

编辑模式:emacs模式和支持vim模式, 默认为emacs模式

export AIANSIBLE_EDITMODE=vi
#或
export AIANSIBLE_EDITMODE=emacs
  • 60
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值