Задача Ansible.Run локально после удаленного / - PullRequest
0 голосов
/ 31 октября 2019

Я запускаю задачу Ansible на удаленных хостах Windows. Я хочу получать сообщения о результатах от Telegram, но по умолчанию эти хосты не содержат python, и модуль Telegram не работает. Как я могу запустить его локально? Например ...

- hosts: winservers
  vars:
   scope: win
   script: Rulez.PS1
   folder: C:\TEMP
  gather_facts: false
  vars_files:
   - /etc/ansible/win/group_vars/{{ scope }}.sec
  tasks:
    - name: Сheck for path {{ folder }} availability. Create if not present.
      win_file:
       path: "{{ folder }}"
       state: directory

После запуска я хочу получить сообщение в Telegram: Задача выполнена в {{ansible_hostname}} Попробуйте вставить этот код в playbook

- hosts: 127.0.0.1
  connection: local
  gather_facts: false
  tasks:
   telegram:
    token: 'tokentokentokentokentoken'
    chat_id: 1234567890
    msg: Task finished at {{ ansible_hostname }}

Но это не такт работа. Кроме того, таким образом я получаю ansible_hostname как localhost

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Насколько мне известно, «ansible_hostname» не будет работать, если вы отключите набор collect_facts: False. и я до сих пор не рекомендую включать эту опцию. Попробуйте {{hostvars ['winservers'] ['inventory_hostname']}} для вашего точного требования.

- hosts: winservers
  vars:
   scope: win
   script: Rulez.PS1
   folder: C:\TEMP
  gather_facts: false
  vars_files:
   - /etc/ansible/win/group_vars/{{ scope }}.sec
  tasks:
    - name: Сheck for path {{ folder }} availability. Create if not present.
      win_file:
       path: "{{ folder }}"
       state: directory

- hosts: 127.0.0.1
  connection: local
  gather_facts: false
  tasks:
    telegram:
        token: 'tokentokentokentokentoken'
        chat_id: 1234567890
        msg: Task finished at {{ hostvars['winservers']['inventory_hostname'] }}
0 голосов
/ 31 октября 2019

Пожалуйста, попробуйте, как показано ниже. (не проверено)

- hosts: winservers
  vars:
   scope: win
   script: Rulez.PS1
   folder: C:\TEMP
  gather_facts: false
  vars_files:
   - /etc/ansible/win/group_vars/{{ scope }}.sec
  tasks:
    - name: Сheck for path {{ folder }} availability. Create if not present.
      win_file:
       path: "{{ folder }}"
       state: directory
    - name: send a message to chat in playbook
      telegram:
       token: 'tokentokentokentokentoken'
       chat_id: 1234567890
       msg: Task finished at {{ ansible_hostname }} 
      delegate_to: localhost
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...