在~/.bash_aliases
中将别名$HOME=/home/ubuntu
用作:
alias k="kubectl -s http:xxxx"
k
代表不同服务器中的不同命令,我必须使用此功能,但是我不能在Ansible shell模块中source
使用它。
还有其他解决方法吗?
我读了几篇文章:
并尝试:
shell: ". /home/ubuntu/.bash_aliases && k get pods --all-namespaces | grep {{ serviceName }}"
shell: ". /home/ubuntu/.bashrc && k get pods --all-namespaces | grep {{ serviceName }}"
以上两种尝试都给我这个错误:
"/bin/sh: 1: k: not found"
shell: "source /home/ubuntu/.bash_aliases && k get pods --all-namespaces | grep {{ serviceName }}"
args:
executable: /bin/bash
shell: "source /home/ubuntu/.bashrc && k get pods --all-namespaces | grep {{ serviceName }}"
args:
executable: /bin/bash
以上两种尝试都给我这个错误:
"/bin/bash: k: command not found"
shell: "sudo -u ubuntu -i k get pods --all-namespaces | grep {{ serviceName }}"
"-bash: k: command not found"
shell: ssh -t localhost /bin/bash -ci 'k get pods --all-namespaces | grep {{ serviceName }}'
"Pseudo-terminal will not be allocated because stdin is not a terminal.", "Host key verification failed."
shell: ssh -tt localhost /bin/bash -ci 'k get pods --all-namespaces | grep {{ serviceName }}'
register: result
"Host key verification failed."
vars:
- kubeCommand: ""
tasks:
- name: Get Command Alias
shell: cat ~/.bash_aliases | awk -F[\"] '{print $2}'
register: result
- set_fact: kubeCommand={{ result.stdout }}
- name: Get service
shell: "{{ kubeCommand }} get pods --all-namespaces | grep {{ serviceName }}"
但是问题仍然存在。
任何帮助将不胜感激:)
答案 0 :(得分:1)
这有点丑陋,但是您可以将alias k="kubectl -s http:xxxx"
直接放在.bashrc
的{{1}}或source .bash_aliases
中,并且在游戏中必须写:
.bashrc