无法在Ansible中获取〜/ .bash_aliases

时间:2018-10-30 08:41:14

标签: ansible

~/.bash_aliases中将别名$HOME=/home/ubuntu用作:

alias k="kubectl -s http:xxxx"

k代表不同服务器中的不同命令,我必须使用此功能,但是我不能在Ansible shell模块中source使用它。

还有其他解决方法吗?

我读了几篇文章:

并尝试:

否-1

  shell: ". /home/ubuntu/.bash_aliases && k get pods --all-namespaces | grep {{ serviceName }}"

否-2

  shell: ". /home/ubuntu/.bashrc && k get pods --all-namespaces | grep {{ serviceName }}"

结果

以上两种尝试都给我这个错误:

"/bin/sh: 1: k: not found"

否-3

  shell: "source /home/ubuntu/.bash_aliases && k get pods --all-namespaces | grep {{ serviceName }}"
  args:
    executable: /bin/bash

否-4

  shell: "source /home/ubuntu/.bashrc && k get pods --all-namespaces | grep {{ serviceName }}"
  args:
    executable: /bin/bash

结果

以上两种尝试都给我这个错误:

"/bin/bash: k: command not found"

否-5

   shell: "sudo -u ubuntu -i k get pods --all-namespaces | grep {{ serviceName }}"

结果

"-bash: k: command not found"

否-6

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."

否-7

  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 }}"

但是问题仍然存在。

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

这有点丑陋,但是您可以将alias k="kubectl -s http:xxxx"直接放在.bashrc的{​​{1}}或source .bash_aliases中,并且在游戏中必须写:

.bashrc