
Недавно начал использовать 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