当前位置: 首页 > 知识库问答 >
问题:

Ansible错误:“[Errno 2]没有这样的文件或目录”

澹台啸
2023-03-14

我无法在ansible命令模块中执行kubectl(V1.16.3)命令。

例如,使用Ansible创建命名空间。

    tasks:
       - name: "Creating Directory"
         file:
           path: ~/ansible_ns/demo_namespaces
           state: directory

       - name: "Creating Namespaces(1/2)"
         copy:
           content: "apiVersion: v1 \nkind: Namespace \nmetadata: \n     name: {{item}} "
           dest: "~/ansible_ns/demo_namespaces/{{item}}.yml"
         with_items:
           - "{{ namespace }}"

       - name: "Creating Namespaces(2/2)"
         command: "kubectl create -f {{item}}.yml --kubeconfig=/var/lib/kubernetes/kubeconfig.yaml"
         args:
           chdir: ~/ansible_ns/demo_namespaces/
         ignore_errors: true
         with_items:
           - "{{ namespace }}"

我以以下错误结束:

(item=ns) => {
    "ansible_loop_var": "item",
    "changed": false,
    "cmd": "kubectl create -f ns.yml --kubeconfig=/var/lib/kubernetes/kubeconfig.yaml",
    "invocation": {
        "module_args": {
            "_raw_params": "kubectl create -f ns.yml --kubeconfig=/var/lib/kubernetes/kubeconfig.yaml",
            "_uses_shell": false,
            "argv": null,
            "chdir": "/root/ansible_ns/demo_namespaces/",
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": true
        }
    },
    "item": "ns",
    "msg": "[Errno 2] No such file or directory",
    "rc": 2
}

注意:但是我可以执行“Kubectl create-f...”手动…它在创造东西。

我的Ansible版本:

$ ansible --version
ansible 2.9.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/mdupaguntla/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

仅供参考,我也尝试了Ansible-2.4.2以及。但运气不好。

当kubectl版本为1.8和ansible版本为2.4.2时,我可以使用命令模块使用“kubectl create-f...”创建K8s资源。但是当我将集群从V1.8升级到V1.16.3时,我不能使用命令模块使用“Kubectl create-f...”创建资源。让我,如果我错过了做的事情。

提前感谢社区

共有1个答案

仇征
2023-03-14

您必须在命令模块中添加kubectl的路径。

command: "/the/path/kubectl create -f {{item}}.yml .........."

这是因为$path没有用kubectl的路径更新。您也可以将路径添加到$path,而不是在命令模块中给出路径。

 类似资料:
  • 问题内容: 我正在使用Ubuntu 14.04。我有以下代码: 但我不断收到以下错误: python程序和图像都在同一位置。可能是什么问题? 问题答案: 您需要安装:

  • 问题内容: 我想在我的一个golang控制器中指定一个html模板。我的目录结构是这样的 我想为请求/ new加载first.html。我已经将NewHandler用于url / new,并且当/ new请求到达并且在controller.go中时,NewHandler函数正在执行。这是我的代码 但是我遇到一个错误 请帮助我删除此错误。提前致谢 问题答案: 我已经通过提供html的绝对路径解决了这

  • 我正在尝试编写一个程序,使用Scala运行Linux命令。 我写了一段代码来运行命令的功能。 代码片段 当我尝试运行命令

  • 问题内容: 我正在尝试使用C扩展文件构建共享库,但首先我必须使用以下命令生成输出文件: 执行命令后,我得到以下错误消息: :致命错误:Python.h:没有此类文件或目录编译终止。 实际上我已经尝试了所有建议的解决方案,但是问题仍然存在…我也没有问题。我设法在我的机器上找到该文件……以前有人遇到过同样的问题吗?? 问题答案: 看来你尚未正确安装python dev的标头文件和静态库。使用软件包管理

  • 我在流管道中进行一些文件处理,想测试一些错误条件。我想到的第一件事是打开不存在的文件。我发现我无法处理这种情况。它看起来像节点。fs不会发出“错误”事件。有人知道怎么处理这个案子吗?我读到fs也有同样的情况。取消链接。 如果文件存在,则输出: 如果文件不存在: 类似问题:这里 人们会问:是否有可能在流之前发出错误事件。on('错误',…)是否生效? 谢谢