mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-27 05:43:02 +00:00
k8s_exec: Select first container from the pod SUMMARY kubectl command select first container from the pod in order to execute commands on. We replicate the same behavior in k8s_exec module. Fixes: #358 Signed-off-by: Abhijeet Kasurde akasurde@redhat.com ISSUE TYPE Bugfix Pull Request COMPONENT NAME changelogs/fragments/358-k8s_exec.yml plugins/modules/k8s_exec.py Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: None <None>
100 lines
2.4 KiB
YAML
100 lines
2.4 KiB
YAML
---
|
|
- vars:
|
|
exec_namespace: k8s-exec
|
|
pod: sleep-pod
|
|
exec_pod_definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: "{{ pod }}"
|
|
namespace: "{{ exec_namespace }}"
|
|
spec:
|
|
containers:
|
|
- name: sleeper
|
|
image: busybox
|
|
command: ["sleep", "infinity"]
|
|
multi_container_pod_name: pod-2
|
|
multi_container_pod_definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: "{{ multi_container_pod_name }}"
|
|
namespace: "{{ exec_namespace }}"
|
|
spec:
|
|
containers:
|
|
- name: sleeper-1
|
|
image: busybox
|
|
command: ["sleep", "infinity"]
|
|
- name: sleeper-2
|
|
image: busybox
|
|
command: ["sleep", "infinity"]
|
|
|
|
block:
|
|
- name: "Ensure that {{ exec_namespace }} namespace exists"
|
|
k8s:
|
|
kind: Namespace
|
|
name: "{{ exec_namespace }}"
|
|
|
|
- name: "Create a pod"
|
|
k8s:
|
|
definition: "{{ exec_pod_definition }}"
|
|
wait: yes
|
|
wait_sleep: 1
|
|
wait_timeout: 30
|
|
|
|
- name: "Execute a command"
|
|
k8s_exec:
|
|
pod: "{{ pod }}"
|
|
namespace: "{{ exec_namespace }}"
|
|
command: cat /etc/resolv.conf
|
|
register: output
|
|
|
|
- name: "Show k8s_exec output"
|
|
debug:
|
|
var: output
|
|
|
|
- name: "Assert k8s_exec output is correct"
|
|
assert:
|
|
that:
|
|
- "'nameserver' in output.stdout"
|
|
|
|
- name: Check if rc is returned for the given command
|
|
k8s_exec:
|
|
namespace: "{{ exec_namespace }}"
|
|
pod: "{{ pod }}"
|
|
command: 'false'
|
|
register: command_status
|
|
ignore_errors: True
|
|
|
|
- name: Check last command status
|
|
assert:
|
|
that:
|
|
- command_status.rc != 0
|
|
- command_status.return_code != 0
|
|
|
|
- name: Create a multi container pod
|
|
k8s:
|
|
definition: "{{ multi_container_pod_definition }}"
|
|
wait: yes
|
|
wait_sleep: 1
|
|
wait_timeout: 30
|
|
|
|
- name: Execute command on the first container of the pod
|
|
k8s_exec:
|
|
pod: "{{ multi_container_pod_name }}"
|
|
namespace: "{{ exec_namespace }}"
|
|
command: echo hello
|
|
register: output
|
|
|
|
- name: Assert k8s_exec output is correct
|
|
assert:
|
|
that:
|
|
- "'hello' in output.stdout"
|
|
|
|
always:
|
|
- name: "Cleanup namespace"
|
|
k8s:
|
|
kind: Namespace
|
|
name: "{{ exec_namespace }}"
|
|
state: absent
|