Почему Ansible задыхается от этих переданных команд? - PullRequest
0 голосов
/ 06 марта 2019

Команда, которая работает в скриптах bash и в терминале Amazon Linux 2, ломается, когда я вызываю ее из книги воспроизведения Ansible.Что конкретно мне нужно изменить, чтобы заставить эту команду работать в пьесе Ansible?

Команда, работающая в терминале целевого сервера, выглядит следующим образом:

[lnxcfg@ip-10-0-0-99 ~]$ MY_CALICO_CIDR=$( sudo cat /home/lnxcfg/calico.yaml | grep -A 1 CALICO_IPV4POOL_CIDR | grep value | cut -d ':' -f2 | tr -d ' "')
[lnxcfg@ip-10-0-0-99 ~]$ echo $MY_CALICO_CIDR
192.168.0.0/16

И затем я помещаю ту же команду в книгу воспроизведения Ansible следующим образом:

 - name: Put cidr for overlay network into environment variable
   command: MY_CALICO_CIDR=$( cat /home/lnxcfg/calico.yaml | grep -A 1 CALICO_IPV4POOL_CIDR | grep value | cut -d ':' -f2 | tr -d ' "')
   become: yes
   become_user: root

Но результат выполнения Ansible показывает, что Ansible анализирует команду и выдает ошибки в результате следующим образом:

TASK [Put cidr for overlay network into environment variable] **********************************************************************
fatal: [10.0.0.6]: FAILED! => {
    "changed": false, "cmd": "'MY_CALICO_CIDR=$(' cat /home/lnxcfg/calico.yaml '|' grep -A 1 CALICO_IPV4POOL_CIDR '|' grep value '|' cut -d : -f2 '|' tr -d ' \")'", "msg": "[Errno 2] No such file or directory", "rc": 2
}
 [WARNING]: Could not create retry file '/home/lnxcfg/playbooks/initializeKubernetesMaster.retry'.         [Errno 13] Permission
denied: u'/home/lnxcfg/playbooks/initializeKubernetesMaster.retry'

Это продолжение до этого другого вопроса .

Итак, какие изменения необходимо внести в Ansible Playbook, чтобы избежать этой ошибки?

1 Ответ

1 голос
/ 06 марта 2019

Как и очень четко указано в прекрасном руководстве , command: не является командами оболочки, оно по сути подается на exec. За то, что вы делаете, вам понадобится shell:

...