Можем ли мы отключить конвейерную обработку в незанятой пьесе, но иметь ее в ansible.cfg?

Я хочу продолжать конвейерную обработку в /etc/ansible/ansible.cfg, но отключить его для одной пьесы, которая удаляет "requiretty" в файле/etc/sudoers

Ответ 1

Мое предположение заключается в том, что этот тип параметров, которые настраивают поведение соединения, задается для всего возможного прогона.

Итак, если вы хотите отключить его для одной пьесы (т.е. запустите ansible-playbook), вы можете переопределить pipelining с помощью переменных среды:

ANSIBLE_SSH_PIPELINING=0 ansible-playbook ...

Это должно сработать.

Удачи!

Ответ 2

Вы можете заставить Ansible подключаться с помощью Paramiko вместо OpenSSH. Парамико не использует конвейерную обработку:

- hosts: my_servers
  remote_user: centos
  become: yes
  become_user: root
  gather_facts: false
  connection: paramiko
  tasks:
    - name: disable requiretty in /etc/sudoers
      replace: regexp="^Defaults\s+requiretty$" replace="# Defaults    requiretty" dest="/etc/sudoers"

Ответ 3

С Ansible 2. 0+ можно элегантно справиться с этим, переопределив настройку для определенных задач:

- name: "task name"
  task_module:
    task_parameters: 42
  vars:
    ansible_ssh_pipelining: no