Назад | Перейти на главную страницу

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

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

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

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

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

Я бы рекомендовал использовать переменные хоста на основе инвентарных или групповых переменных. Это позволяет вам установить пользователя 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

Вы можете использовать доступные playbooks для такого рода вещей.

например

--- 
- 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

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