Я хочу продолжать конвейерную обработку в /etc/ansible/ansible.cfg, но отключить его для одной пьесы, которая удаляет "requiretty" в файле/etc/sudoers
Можем ли мы отключить конвейерную обработку в незанятой пьесе, но иметь ее в ansible.cfg?
Ответ 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