Как заставить Ansible отображать имя хоста, прежде чем запрашивать пароль sudo? - PullRequest
0 голосов
/ 10 января 2020

У меня есть Ansible playbook для обновления моих серверов на основе Debian. Из соображений простоты и безопасности я не хочу использовать хранилище для паролей и не хочу хранить их в общедоступном конфигурационном файле. Поэтому я спрашиваю пароль для каждого клиента с

become: yes
become_method: sudo

Теперь, когда Playbook запускается, кажется, что первое, что делает Ansible, это запрашивает пароль sudo, но я не знаю, для чего сервер (пароли разные). Есть ли способ заставить Ansible напечатать текущее имя хоста, прежде чем он запросит пароль?

Обновление playbook похоже на это:

---
- hosts:
    all
  gather_facts: no
  vars:
    verbose: false
    log_dir: "log/dist-upgrade/{{ inventory_hostname }}"
  pre_tasks:
    - block:
        - setup:
      rescue:
        - name: "Install required python-minimal package"
          raw: "apt-get update && apt-get install -y --force-yes python-apt python-minimal"
        - setup:
  tasks:
    - name: Update packages
      apt:
        update_cache: yes
        upgrade: dist
        autoremove: yes
      register: output

    - name: Check changes
      set_fact:
        updated: true
      when: not output.stdout | search("0 upgraded, 0 newly installed")

    - name: Display changes
      debug:
        msg: "{{ output.stdout_lines }}"
      when: verbose or updated is defined

    - block:
      - name: "Create log directory"
        file:
          path: "{{ log_dir }}"
          state: directory
        changed_when: false

      - name: "Write changes to logfile"
        copy:
          content: "{{ output.stdout }}"
          dest: "{{ log_dir }}/dist-upgrade_{{ ansible_date_time.iso8601 }}.log"
        changed_when: false

      when: updated is defined
      connection: local

(источник: http://www.panticz.de/Debian-Ubuntu-mass-dist-upgrade-with-Ansible)

1 Ответ

0 голосов
/ 10 января 2020

Ваша вышеупомянутая конфигурация становления не заставляет ansible запрашивать у вас ставший пароль: он просто советует использовать его с методом sudo (который будет работать без пароля, если у вас, например, настроены правильные ключи).

Если вас просят ввести пароль, это потому, что (это предположение, но я довольно уверен ...) вы использовали опцию --ask-become-pass при запуске ansible-playbook.

В в этом случае вам будет предложено только один раз в начале операций playbook, и этот пароль по умолчанию станет использоваться на всех серверах, к которым вы подключаетесь, за исключением случаев, когда вы определили другой в своем инвентаре для указанной c хоста / группы.

Если у вас разные пароли в зависимости от ваших машин, у вас нет другого варианта: вам нужно объявить эти пароли в вашем инвентаре (и настоятельно рекомендуется использовать шифрование ansible -ult) или используйте некоторые другие механизмы для извлечения их из внешнего приложения (hashicorp vault, dynamici c инвентарь, cyb erark ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...