fqcn-builtins:在 Ansible playbook 中使用 FQCN 进行内置操作

lak*_*man 7 ansible

我正在使用ansible和helm图表进行自动部署。当我尝试运行我的 ansible 剧本时,在此之前我试图找到我的 ansible 角色的 linting。我已经清除了 ansible lint 测试期间出现的大部分警告。

但我不明白“fqcn-builtins:使用 FQCN 进行内置操作”。谁能告诉我如何解决这个问题,我几乎在我的所有剧本中都可以看到。

fqcn-builtins: Use FQCN for builtin actions.
main.yml:43 Task/Handler: Remove local image
fqcn-builtins: Use FQCN for builtin actions.
main.yml:48 Task/Handler: output message
fqcn-builtins: Use FQCN for builtin actions.
main.yml:64 Task/Handler: Remove local image
fqcn-builtins: Use FQCN for builtin actions.
main.yml:69 Task/Handler: output message
fqcn-builtins: Use FQCN for builtin actions.
main.yml:85 Task/Handler: Remove local image
fqcn-builtins: Use FQCN for builtin actions.
main.yml:90 Task/Handler: output message
fqcn-builtins: Use FQCN for builtin actions.
Run Code Online (Sandbox Code Playgroud)

我的文件中的示例剧本

- name: Remove local image
  shell: docker image rm {{ image.docker_image_main }}:{{ imageTag }}
  register: imagedelete
  changed_when: "'untagged' in imagedelete.stdout"
  # noqa command-instead-of-shell
- name: output message
  debug:
    msg: "{{ imagedelete.stdout }}"
  become: "yes"
Run Code Online (Sandbox Code Playgroud)

来自管道的图像

小智 11

FQCN 代表“完全限定的集合名称”。您需要在 ansilbe playbook 中指定完全限定的集合名称。

在您的示例中,您使用的是 FQCN 为 的“shell”模块ansible.builtin.shell

在你的剧本中,你需要添加ansible.builtin.shell而不是shell


Abd*_*oui 7

ansible-lint 6开始,默认情况下此规则是隐式的。

您可以通过创建.ansible-lint文件(如果尚不存在)并添加以下内容来选择退出此行为

skip_list:
  - 'fqcn-builtins'
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用特定版本的 ansible-lint (5.x),直到您准备好升级,