繁体   English   中英

k8s 模块无法识别远程机器上的环境变量 - Ansible

[英]k8s Module not recognizing environement variables on the remote machine - Ansible

我正在尝试通过 Ansible 剧本在 Rancher 机器上执行 k8s 命令。 问题是我有一个错误,说远程机器上不存在“导出”命令,这没有任何意义。 错误是:

"OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused \"exec: \\\"export\\\": executable file not found in $PATH\": unknown\r\n"

这很奇怪,因为每台 Linux 机器默认都有导出命令。 这与找不到“cd”的说法相同。

我正在使用导出命令来创建“$RETAIL_HOME”变量,然后在该目录上执行一些命令。

这是我正在运行的剧本:

---
- hosts: localhost #group of hosts on host file
  connection: local
  remote_user: redmine
  vars:
    ansible_python_interpreter: '{{ ansible_playbook_python }}'
  collections:
    - community.kubernetes
  tasks:
      - name: Define Retail Home Path
      k8s_exec:
        kubeconfig: "{{ kubeconfig_path | mandatory }}"
        namespace: redmine
        pod: "{{ pod_name | mandatory }}" #pod name
        command: export RETAIL_HOME=/u01/app/rms
    - name: Move to Retail_Home Directory
      k8s_exec:
        kubeconfig: "{{ kubeconfig_path | mandatory }}"
        namespace: redmine
        pod: "{{ pod_name | mandatory }}" #pod name
        command: cd $RETAIL_HOME
    - name: execute rpatch to analyse the Patch
      k8s_exec:
        kubeconfig: "{{ kubeconfig_path | mandatory }}"
        namespace: redmine
        pod: "{{ pod_name | mandatory }}" #pod name
        command: orpatch analyze -s /tmp/p{{ patch_id | mandatory }}_190000_Generic #passing the patch id as mandatory
    - name: ORPatch Apply
      k8s_exec:
        kubeconfig: "{{ kubeconfig_path | mandatory }}"
        namespace: redmine
        pod: "{{ pod_name | mandatory }}" #pod name
        command: orpatch apply

Ansible 版本:

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)]

shellcommand模块之间的相同差异适用于该模块的command字段。 你试图做的是使用 shell 属性不起作用。

此外,不同k8s_exec任务中的命令也无济于事,因为它们不相关,因此在第一个任务中导出变量不会使其在下一个任务中可用,您应该将所有内容放在一个命令上。

- name: Define Retail Home Path
  k8s_exec:
    kubeconfig: "{{ kubeconfig_path | mandatory }}"
    namespace: redmine
    pod: "{{ pod_name | mandatory }}" #pod name
    command: |
      orpatch analyze -s /tmp/p{{ patch_id | mandatory }}_190000_Generic
      orpatch apply
    environment:
      RETAIL_HOME: /u01/app/rms
      

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM