Как заставить Ansible использовать sudo для установки пакетов? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть книга игр, в которой выполняются роли, и я захожу на сервер с пользователем, имеющим права sudo. Проблема в том, что при переключении на этого пользователя мне все равно нужно использовать sudo, скажем, для установки пакетов.

есть:

sudo yum install httpd

Однако Ansible, похоже, игнорирует это и попытается установить пакеты без sudo, что приведет к ошибке.

Ansible запустит следующее:

yum install httpd

Это роль, которую я использую:

tasks:
  - name: Import du role 'memcacheExtension' 
    import_role:
      name: memcacheExtension
    become: yes
    become_method: sudo
    become_user: "{{become_user}}"
    become_flags: '-i'
    tags:
      - never
      - memcached

И это задачи, которые не выполняются в моем контексте:

- name: Install Memcached
  yum:
    name: memcached.x86_64
    state: present

Я устанавливаю параметр sudo в неправильном месте? Или я что-то не так делаю?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 22 марта 2019

Вы можете указать: да несколько мест. Часто он используется на уровне задач, иногда он используется в качестве параметра командной строки (--become, -b выполнять операции с становлением). Он также может быть установлен на уровне игры:

- hosts: servers
  become: yes
  become_method: enable
  tasks:
    - name: Hello
  ...

Вы также можете включить его в group_vars:

group_vars / exmaple.yml

ansible_become: yes

Для вашего примера, используя его для установки программного обеспечения, я бы установил его на уровне задач. Я думаю, что в вашем случае проблема импорта. Вы должны установить его в импортируемом файле.

0 голосов
/ 22 марта 2019

В итоге я указал Ansible, чтобы стать пользователем root для некоторых из задач, которые не были выполнены (мой пример был не единственным, из-за которого произошел сбой, и он работал хорошо. В моей среде есть недоработка: я не могу войти в систему как root, но я могу "стать" пользователем root после входа в систему под именем другого пользователя.

Вот как сейчас выглядят мои задачи:

- name: Install Memcached
  yum:
    name: memcached.x86_64
    state: present
  become_user: root
0 голосов
/ 22 марта 2019

Использовать модуль оболочки вместо yum.

- name: Install Memcached shell: sudo yum install -y {{ your_package_here }}

Не так круто, как использование модуля, но он справится с работой.

Ваш стал_пользователем в порядке. Если вы не используете его, вы в конечном итоге попытаетесь выполнить команды в книге воспроизведения, используя пользователя, который использовал для установки соединения ssh (ansible_user или remote_user или пользователя, использовавшего для запуска книги воспроизведения).

...