Ansible:命令行选项';d';[from-d]与其他选项结合使用时不理解
更新:尽管此Q被标记为打字错误(因此“对用户不太有用”),但问题实际上是需要使用正确的ansible模块<代码>shell,而不是Ansible:命令行选项';d';[from-d]与其他选项结合使用时不理解,ansible,ansible-role,Ansible,Ansible Role,更新:尽管此Q被标记为打字错误(因此“对用户不太有用”),但问题实际上是需要使用正确的ansible模块shell,而不是命令模块 我希望有人能告诉我哪里出了问题,我猜这与命令行中的语法或转义或字符有关(尽管我尝试用cut替换awk(带卷发),但没有运气),这导致了以下错误: “stderr”:“\u001b[1;31mE:\u001b[0m命令行选项“F”[from-F,]与其他选项组合使用时无法理解。\u001b[0m” 基本上,在我创建的角色中,我想动态地存储一个列表,列出碰巧安装的gno
命令
模块
我希望有人能告诉我哪里出了问题,我猜这与命令行中的语法或转义或字符有关(尽管我尝试用cut替换awk(带卷发),但没有运气),这导致了以下错误:
“stderr”:“\u001b[1;31mE:\u001b[0m命令行选项“F”[from-F,]与其他选项组合使用时无法理解。\u001b[0m”
基本上,在我创建的角色中,我想动态地存储一个列表,列出碰巧安装的gnome或x11包,然后使用apt删除它们;
- name: Generate variable containing all gnome GUI packages
command: apt list | awk -F, '/gnome/ && /installed/ {print $1}'
register: gui_packages
ignore_errors: yes
changed_when: false
- name: Remove entire GUI
apt:
name:
- "{{ gui_packages_to_remove_specific }}"
- "{{ gui_packages }}"
state: absent
force: yes
when:
- remove_gui_packages is defined
- remove_gui_packages is true
提前感谢您提供的任何帮助!!来自命令的模块:
命令不会通过shell处理,因此$HOSTNAME等变量和“*”、“”、“|”、“;”和“&”等操作将不起作用。如果需要这些功能,请使用ansible.builtin.shell模块
您的语法问题是您没有运行apt
管道到awk
。您正在运行apt
,并将list | awk-F、/gnome/&/installed/{print$1}'
作为参数提供给它。来自命令的模块:
命令不会通过shell处理,因此$HOSTNAME等变量和“*”、“”、“|”、“;”和“&”等操作将不起作用。如果需要这些功能,请使用ansible.builtin.shell模块
您的语法问题是您没有运行apt
管道到awk
。您正在运行apt
,并将所有list | awk-F、/gnome/&/installed/{print$1}'
作为参数提供给它。命令
不支持管道(请参阅文档)。使用shell
。此外,注册的var将包含有关完整任务的信息。命令的输出将在gui\u包中提供。stdout
或gui\u包中提供。stdout\u行
取决于您希望如何处理它。命令
不支持管道(请参阅文档)。使用shell
。此外,注册的var将包含有关完整任务的信息。您的命令输出将在gui\u包中提供。stdout
或gui\u包中提供。stdout\u行
取决于您希望如何处理它。谢谢!它现在生成了一个列表ok,但我无法将其输入apt模块。将其作为循环传递是可行的,但效率很低。将其作为gui_packages.stdout或gui_packages.stdout_行传递失败是因为列表格式错误吗?此代码有效:-name:Generate variable包含所有gnome gui包shell:apt list 2>/dev/null | awk-F',/gnome | x11/&/installed/{print$1}awk-F\/'{print$1}'register:gui_packages ignore_errors:yes changed_when:false-name:DEBUG DEBUG:msg:“{item}}”循环:“{{gui_packages.stdout_lines}”谢谢!它现在生成了一个列表,但我在将其输入apt模块时遇到了问题。将其作为循环传递是可行的,但效率很低。将其作为gui_packages.stdout或gui_packages.stdout_行传递失败是否列表格式错误?此代码有效:-name:生成包含所有gnome gui包的变量shell:apt list 2>/dev/null | awk-F'/gnome | x11/&&/installed/{print$1}'| awk-F\/{print$1}'寄存器:gui_包忽略_错误:yes更改_时:false-name:DEBUG调试:msg:{item}}循环:{{{gui gui packages.stdout_行}