Ansible Tower运行Playbook报组名无效字符警告的成因与配置疑问
Ansible Tower 执行Playbook出现组名警告的问题说明
基础场景
- 初次使用Ansible Tower时完成基础配置:先创建对应项目,随后在该项目下新建绑定测试Playbook
Test.yml的作业模板。测试用的Playbook内容为:
--- - hosts: east01.xxxxx.com become: yes become_method: sudo tasks: - name: test shell: echo 'line one line two line three' >> /tmp/abcdef.txt
- 在Tower界面点击运行作业的"火箭"按钮启动任务,表面执行流程正常,最终在目标机器上观测到
/tmp/abcdef.txt文件的修改结果符合预期,但运行日志中出现提示:
Identity added: /tmp/awx_35003_yehjodc1/artifacts/35003/ssh_key_data (/tmp/awx_35003_yehjodc1 /artifacts/35003/ssh_key_data) [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details PLAY [east01.xxxxx.com] ********************************************** TASK [Gathering Facts] ********************************************************* ok: [east01.xxxxx.com] TASK [test] ******************************************************************** changed: [east01.xxxxx.com] PLAY RECAP ********************************************************************* east01.xxxxx.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
核心疑问
- 该警告的具体产生原因
- Tower环境中如何配置
-vvvv级别的详细日志参数 - 同一份Playbook用原生
ansible-playbook命令行运行无该警告,是否为Tower与原生命令行的执行逻辑差异导致
问题成因
- 警告触发源:Ansible 2.10及以上版本新增组名字符校验规则,要求Inventory中的组名仅可包含字母、数字、下划线,不得包含点号、连字符等特殊字符。
- 执行逻辑差异来源:命令行运行时使用的是手动维护的Inventory,组名完全符合校验规则,因此不会触发警告;Tower在执行作业时,会自动基于主机的元数据生成临时映射组,比如将主机名本身作为临时组的一部分,这类自动生成的临时组名包含主机自带的点号(如测试主机
east01.xxxxx.com本身的点号),因此会触发校验警告。 - 影响范围说明:该警告仅为规范类提示,不会阻塞任务执行流程,Ansible会自动兼容处理不符合规范的组名逻辑,因此实际任务执行结果不受该警告影响。
对应操作方法
配置Tower的-vvvv详细日志
- 方式1:使用模板内置的日志档位配置。进入作业模板编辑页,找到*Verbosity(日志详细度)*下拉选项,直接选择4级(对应命令行
-vvvv参数),保存模板后运行作业即可获得最高详细度的执行日志。 - 方式2:通过额外变量全局覆盖。进入作业模板编辑页,找到*Extra Variables(额外变量)*配置栏,填入
ansible_verbosity: 4,保存模板后运行作业,也可达到同等详细度的日志效果。 - 方式3:单次临时生效。在作业启动的临时确认弹窗中,调整日志档位或填入上述额外变量配置,无需修改模板默认参数,仅本次运行生效。
消除该警告的可选操作
- 如需关闭该警告提示,可在Tower的全局作业配置中找到「Ansible命令行参数」配置项,追加参数配置,开启组名自动替换规则:传入
ansible_translate_native_groups=True,即可让Ansible自动将不符合规范的特殊字符替换为下划线,不再抛出对应警告。
内容的提问来源于stack exchange,提问作者jstack100
相关产品推荐
相关产品推荐

