Ansible: использование разных пользователей sudo для разных хостов

Ansible: использование разных пользователей sudo для разных хостов

Недавно начал использовать ansible. У нас есть серверы, где приложение настроено под разными пользователями, например, на сервере xyz.com, unix-пользователь — xyz_user и так далее.

Так что в случае с xyz.com,

ansible xyz.com -a 'command' -u xyz_user -K

Как можно задать пользователя sudo в конфигурации ansible, чтобы автоматически выполнять sudo для конкретного пользователя, определенного для сервера?

решение1

Для подобных задач можно использовать руководства Ansible.

например

--- 
- hosts: host1:host2 
  user: user1 
  sudo: yes
  tasks: 
  - name: update package list 
    action: command /usr/bin/apt-get update 
  - name: upgrade packages 
    action: command /usr/bin/apt-get -u -y dist-upgrade 
- hosts: host3 
  user: ubuntu
  sudo: yes 
  tasks: 
  - name: update package list 
    action: command /usr/bin/apt-get update 
  - name: upgrade packages 
    action: command /usr/bin/apt-get -u -y dist-upgrade

Надеюсь, у вас это сработает :)

решение2

Я бы рекомендовал использовать переменные хоста на основе inventory или group vars. Это позволяет вам устанавливать пользователя ssh на хост или на группу хостов. Преимущество этого подхода в том, что он прозрачен для ваших плейбуков. В плейбуках вам тогда придется беспокоиться только об установке вещей, а не о доступе.

Пример того, как задать пользователя по хосту и группе:

[xyz]
www.xyz.com ansible_ssh_user=xyz_user

[abc]
www.abc.com

[abc:vars]
ansible_ssh_user=abc_user

А вот документация, которая объясняет, как это работает, гораздо лучше меня:http://docs.ansible.com/intro_inventory.html

Связанный контент