Запрос относительно ansible_python_interpreter - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть 500+ целевых серверов, на которых установлены ANSI-совместимые python version 2.7, установленные в разных местах, как показано ниже.

/ usr / bin / python / opt / apps / xerto / tools / ansible/bin/python2.7

/ opt / atlassian / tools / ansible / bin / python2.7

/ opt / wsp / apps / ansible / python2.7 / bin / python2.7

/ opt / wsp / apps / tools / ansible / python2.7 / bin / python2.7

/ opt / docs / python / bin / python2.7

/home/admin/ansible/bin/python2.7

/ opt / operations / Python-2.7.8 / bin / python

/ opt / ora / python / bin / python2.7

/ opt / tomcat / tools / ansible / bin / python2.7

Каждый раз, когда мне нужно установить один из указанных выше путей python для ansible_python_interpreter в файле ansible host, в зависимости отк какому целевому серверу подключится моя рассылка.

Мое намерение состоит в том, чтобы вносить небольшие изменения в целевые серверы или не вносить в них никаких изменений, вместо этого решить эту проблему в конце рассылки.

Есть ли разумный способчтобы быть в курсе, где находится желаемый питонэто?

Пожалуйста, предложите.

Ansible version: 2.7.1

1 Ответ

0 голосов
/ 07 февраля 2019

Есть ли умный способ получить четкое представление о том, где находится желаемый питон?

- hosts: all
  # since we have no working python yet, don't bother
  gather_facts: no
  vars:
     possible_pythons:
     - /usr/bin/python
     - /opt/apps/xerto/tools/ansible/bin/python2.7
     - /opt/atlassian/tools/ansible/bin/python2.7
     - /opt/wsp/apps/ansible/python2.7/bin/python2.7
  tasks:
  - raw: if [ -x "{{ item }}" ]; then echo "{{ item }}"; fi
    with_items: "{{ possible_pythons }}"
    register: pystat
    when: pystat is not defined or (pystat.stdout|length) == 0
  - set_fact:
      ansible_python_interpreter: '{{ pystat.results | selectattr("stdout") | map(attribute="stdout") | first }}'
  # NOW we can run the fact gathering step
  - setup:
  - debug:
      msg: and now we are off to the races!

Я думаю, что для этого тоже можно использовать итерации оболочки, ноЯ не проверял и не продумывал все крайние случаи:

- raw: |
     PYTHONS='{{ possible_pythons | join(" ") }}'
     for p in $PYTHONS; do
       if [ -x "$p" ]; then echo "$p"; break; fi
     done
  register: the_python
...