【发布时间】:2020-05-01 04:12:34
【问题描述】:
我无法在 ansible 命令模块中执行 kubectl(v1.16.3) 命令。
例如使用 ansible 创建命名空间。
任务: - 名称:“创建目录” 文件: 路径:~/ansible_ns/demo_namespaces 状态:目录 - 名称:“创建命名空间(1/2)” 复制: 内容:“apiVersion:v1 \nkind:命名空间 \nmetadata:\n 名称:{{item}}” 目标:“~/ansible_ns/demo_namespaces/{{item}}.yml” with_items: -“{{命名空间}}” - 名称:“创建命名空间(2/2)” 命令:“kubectl create -f {{item}}.yml --kubeconfig=/var/lib/kubernetes/kubeconfig.yaml” 参数: chdir: ~/ansible_ns/demo_namespaces/ 忽略错误:真 with_items: -“{{命名空间}}”我最终遇到以下错误:
(项目=ns) => { “ansible_loop_var”:“项目”, “改变”:错误, "cmd": "kubectl create -f ns.yml --kubeconfig=/var/lib/kubernetes/kubeconfig.yaml", “调用”:{ “模块参数”:{ "_raw_params": "kubectl create -f ns.yml --kubeconfig=/var/lib/kubernetes/kubeconfig.yaml", “_uses_shell”:假, “argv”:空, "chdir": "/root/ansible_ns/demo_namespaces/", “创建”:空, “可执行”:空, “删除”:空, “标准输入”:空, “stdin_add_newline”:是的, “strip_empty_ends”:是的, “警告”:真 } }, “项目”:“ns”, "msg": "[Errno 2] 没有这样的文件或目录", “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。但没有运气。
我的系统操作系统:CentOS 7
我的查询:
在我的上下文中,这个错误是什么意思“[Errno 2] 没有这样的文件或目录”?
我了解到 Ansible 引入了 kubectl & k8s 模块:社区中是否有人在使用这些模块。如果是,请告诉我如何使用它们。如果他们有任何先决条件 - 请分享 对于 kubectl 模块:开始知道先决条件是 kubectl go library.May 我知道我在哪里可以 获取此库。
当 kubectl 版本为 1.8 且 ansible 版本为 2.4.2 - 我能够使用命令模块获取使用“kubectl create -f ...”创建的 K8s 资源。但是当我将集群从 v1.8 升级到 v1.16.3 时 - 我无法使用命令模块使用“kubectl create -f ...”创建资源。如果我错过了做事,请告诉我。
提前感谢社区
【问题讨论】:
-
在命令前提供 kubectl 的路径或尝试使用 shell 命令或尝试给出 become: true
-
1.如果我使用 shell 模块。我收到“/bin/sh: kubectl: command not found”。 2. 我已经使用了下面的东西 become: true become_method: sudo become_user: root 3. “在命令之前提供 kubectl 的路径” - 比如? - 有什么例子吗?
-
我的意思是 kubectl 的路径。 command: "/the/path/kubectl create -f {{item}}.yml.kubectl所在的路径
-
@smily - 它正在工作.. 非常感谢......但是为什么我应该将 kubectl 的路径放在命令中。有什么解决方法吗?
标签: kubernetes ansible