Недавно начал использовать 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
Надеюсь, это сработает для вас :)