ansible playbook выполняется и не показывает ошибок, но не делает того, чего ожидать на хосте

#ansible #controller #wago

#ансибль #контроллер #ваго #ansible #wago

Вопрос:

Попытка использовать ansible в сочетании с хост-файлом контроллера wago настроена правильно. Прежде чем приступить к пользовательскому кодированию, я хочу проверить, все ли работает так, как ожидалось. Поэтому я создал небольшой простой тестовый playbook, который просто создает текстовый файл…

  1 ---                                                                                                     
 2 - name: configure wago-controller pfc200
 3   hosts: pfc200
 4   connection: local
 5   become: true
 6   become_user: root
 7   gather_facts: no
 8   vars:
 9    ansible_python_interpreter: /usr/bin/python3
 10  
 11   tasks:
 12  
 13    - name: "information"
 14      command: touch /tmp/hello.txt
 15      register: command_output
 16  
 17    - debug: var=command_output
  

на контроллере установлен python 3
папка /tmp имеет следующие права доступа

  0 drwxrwxrwt    2 root     root         160 Aug 30 18:16 tmp
  

выполнение сценария

 sudo ansible-playbook test.yml
  

приносит следующие результаты

 PLAY [configure wago-controller pfc200]      
********************************************************************
TASK [information]   
*****************************************************************************************
[WARNING]: Consider using the file module with state=touch rather than running 'touch'.  If 
you need to use command because file is insufficient you can add 'warn: false' to this
command task or set
'command_warnings=False' in ansible.cfg to get rid of this message.
changed: [pfc200]

TASK [debug]   
************************************************************************************
ok: [pfc200] => {
    "command_output": {
        "changed": true, 
        "cmd": [
        "touch", 
        "/tmp/hello.txt"
    ], 
    "delta": "0:00:00.002519", 
    "end": "2020-08-30 18:12:48.129959", 
    "failed": false, 
    "rc": 0, 
    "start": "2020-08-30 18:12:48.127440", 
    "stderr": "", 
    "stderr_lines": [], 
    "stdout": "", 
    "stdout_lines": [], 
    "warnings": [
        "Consider using the file module with state=touch rather than running 'touch'.  If you need to use command because file is insufficient you can add 'warn: false' to this command  task or set 'command_warnings=False' in ansible.cfg to get rid of this message."
           ]
       }
    }

     PLAY RECAP ******************************************************************
     pfc200             : ok=2    changed=1    unreachable=0    failed=0   
     skipped=0    rescued=0    ignored=0  
  

если я войду в контроллер и проверю наличие файла…файл отсутствует…
Прежде чем это не сработает .. нет смысла углубляться в конфигурацию

Совет…также проверил с помощью команды оболочки … что приводит к тому же эффекту..

Комментарии:

1. Если все, что вы хотите сделать, это создать пустой файл для тестирования, вы можете использовать файловый модуль с state: touch опцией.

2. я думаю, это не command…it тот факт, что он проходит и не дает мне представления, почему он не работает …. команда touch file была для демонстрации, могу ли я получить доступ к контроллеру и могу ли я выдать команду…

3. Я бы предположил, что у вас есть некоторые настройки, которые сопоставляются /tmp для каждого сеанса, а затем очищают его при выходе из системы; поскольку вы работаете от имени root, попробуйте коснуться файла, который находится в более надежном месте, таком как /root или /etc или даже /

4. то же дерьмо … извините .. просто подумал, что это имело бы смысл … это сводит меня с ума…

Ответ №1:

Глупый я…

локальное соединение

.. о чем я думал…кроме того, теперь появилась новая ошибка … я предполагаю, что в контроллере отсутствует библиотека zlib .. см. Ниже

  1 ---                                                                                                     
 2 - name: configure wago-controller pfc200
 3   hosts: pfc200
 4#   connection: local
 5   become: true
 6   become_user: root
 7   gather_facts: no
 8   vars:
 9    ansible_python_interpreter: /usr/bin/python3
10  
11   tasks:
12  
13    - name: "information"
14      command: touch /tmp/hello.txt
15      register: command_output
16  
17    - debug: var=command_output
  

новая ошибка

 TASK [information]   
******************************************************************************
An exception occurred during task execution. To see the full traceback, use   
-vvv. The error was: zipimport.ZipImportError: can't decompress data; zlib not 
available
fatal: [pfc200]: FAILED! => {"changed": false, "module_stderr": "Shared
connection to 192.168.4.112 closed.rn", "module_stdout": "Traceback (most 
recent call last):rn  File "/root/.ansible/tmp/ansible-
tmp-1598822914.27-13741-65296373053829/AnsiballZ_command.py", line 102, in
<module>rn    _ansiballz_main()rn  File "/root/.ansible/tmp/ansible-
tmp-1598822914.27-13741-65296373053829/AnsiballZ_command.py", line 94, in 
_ansiballz_mainrn    invoke_module(zipped_mod, temp_path,   
ANSIBALLZ_PARAMS)rn  File "/root/.ansible/tmp/ansible-
tmp-1598822914.27-13741-65296373053829/AnsiballZ_command.py", line 37, in 
invoke_modulern    from ansible.module_utils import basicr
nzipimport.ZipImportError: can't decompress data; zlib not availablern",
 "msg": "MODULE FAILUREnSee stdout/stderr for the exact error", "rc": 1}