首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Ansible在Pod上使用k8s模块执行外壳命令

如何通过Ansible在Pod上使用k8s模块执行外壳命令
EN

Stack Overflow用户
提问于 2020-06-28 10:07:43
回答 1查看 1.3K关注 0票数 1

我在尝试使用k8s模块执行外壳命令时遇到了一些问题。据我所知,k8s只拥有传递命令的k8s_exec。不过,这个模块类似于Ansible command模块,它没有我迫切需要的一个非常重要的功能:在pod上管理和使用环境变量。我目前发现的一种解决方法是使用kubectl exec函数在远程计算机上执行外壳命令。我知道这不是最好的方法。

以下是说明该问题的一些示例的攻略:

代码语言:javascript
复制
---
- hosts: localhost #group of hosts on host file
  connection: local
  remote_user: root
  vars:
    ansible_python_interpreter: '{{ ansible_playbook_python }}'
  collections:
    - community.kubernetes

    - name: Define Retail Home Path with k8s_exec module (not working!!!)
      k8s_exec:
        kubeconfig: "{{ kubeconfig_path | mandatory }}"
        namespace: redmine
        pod: redminetisl-gitlab-54d7759df8-l52cb #pod name
        command: export RETAIL_HOME=/u01/app/rms
    - name: Define Retail Home Path with kubectl exec module (working!!!)
      command: kubectl --namespace=redmine exec redminetisl-gitlab-54d7759df8-l52cb -- /bin/bash -c "export RETAIL_HOME=/u01/app/rms"

有没有办法在带有k8s模块的远程机器上执行外壳命令和使用/管理环境变量?

可能的版本:

代码语言:javascript
复制
ansible 2.9.9
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
EN

回答 1

Stack Overflow用户

发布于 2020-06-28 19:45:33

您不能使用此机制来更改进程环境变量。在Unix中通常是这样的:一个进程不能更改另一个进程的环境变量,除非父进程可以在创建子进程时指定它们(即使从技术上讲,设置它们的是运行父进程的代码的子进程)。您可以使用例如ssh看到相同的事情

代码语言:javascript
复制
ssh somewhere export RETAIL_HOME=/u01/app/rms
ssh somewhere echo \$RETAIL_HOME

如果您想要设置一个环境变量,并且您需要它来影响Pod的主进程,那么您需要编辑部署规范;当您更改此规范时,Kubernetes将重新部署Pod以拥有新的变量。对于像文件系统路径这样的东西,也可以考虑将其放入映像的Dockerfile中。

由于pod被删除是非常常见的(部署更新将导致其所有pod被删除并重新创建;如果节点需要关闭,集群可以自己进行删除),因此尝试使用kubectl exec直接在pod中进行更改并不是特别可靠。我根本不会尝试用Ansible来“管理”一个pod。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62617467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档