UPDATE:虽然这个Q被标记为拼写错误(因此"对用户不太有用"),但问题实际上是需要使用正确的ansible模块;shell
,而不是command
模块。
我希望有人可以告诉我我在这里出错的地方,我猜这与语法或转义或字符有关(尽管我尝试用cut替换awk(带有卷曲),但没有运气)在命令行中导致以下错误:
"stderr": "u001b[1;31mE: u001b[0mCommand line option 'F' [from -F,] is not understood in combination with the other options.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
提前感谢您提供的任何帮助!!
来自command
模块的文档:
命令不会通过 shell 处理,因此像 $HOSTNAME 这样的变量和像"*"、"<"、">"、"|"、"这样的操作;"和"&"将不起作用。如果需要这些功能,请使用 ansible.builtin.shell 模块。
您的语法问题是您没有运行apt
管道到awk
。您正在运行apt
并将其全部list | awk -F, '/gnome/ && /installed/ {print $1}'
作为参数。