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

ansible playbook, разные пользователи в зависимости от операционной системы

Я начинаю играть с анзибль. У меня есть куча серверов (Ubuntu, Centos, Red Hat ...).

На серверах разные пользователи. Для серверов ubuntu я использую пользователя sudo, для остальных я использую пользователя root.

Как я мог указать пользователя по операционной системе?

В документы упомянуть выполнение задач только для определенных операционных систем. Вы можете настроить это, чтобы установить пользователя для каждой ОС. Например

- hosts: CentOS
  user: centos
  tasks:
  - # some tasks

- hosts: Debian
  user: default
  - # some tasks

- hosts: Ubuntu
  user: ubuntu
  - # some tasks

Из источника видно, что эти операционные системы поддерживаются, хотя я не мог подтвердить это в официальной документации на момент написания этой статьи.

  • Красная Шапка
  • Fedora
  • CentOS
  • Научный
  • SLC
  • Ascendos
  • CloudLinux
  • PSBM
  • OracleLinux
  • OVS
  • OEL
  • Amazon
  • XenServer
  • Ubuntu
  • Debian
  • SLES
  • SLED
  • OpenSuSE
  • SuSE
  • Gentoo
  • ArchLinux
  • Mandriva
  • Мандрагора
  • Солярис
  • Nexenta
  • OmniOS
  • OpenIndiana
  • SmartOS

Вы также можете определить переменные для каждой ОС в vars/<os-name>.yaml файлы и условно использовать их с помощью ansible_os_family переменная шаблона, как показано Вот.

CentOS и так далее не автоматические. Это группа над доступной переменной. Вот полный пример работы с CentOS plus VM или без VM.

---
- name: RG Ansible for ALL
  hosts: all
  tasks:
  - name: group by OS versions
    group_by: key="{{ ansible_distribution }}_{{ ansible_distribution_version.split('.')[0] }}"
  - name: group by physical/virtual machine
    group_by: key="{{ ansible_virtualization_role }}"
...
- name: RG Ansible for CentOS 6
  hosts: CentOS_6
  gather_facts: false
  tasks:
...
- name: RG Ansible for CentOS 5
  hosts: CentOS_5
  gather_facts: false
  tasks:

- name: RG Ansible for VM
  hosts: guest
  gather_facts: false
  tasks:
  - service: name=acpid state=stopped enabled=no
  - service: name=cpuspeed state=stopped enabled=no

Укажите пользователя на командная строка:

ansible-playbook foo.yml --extra-vars "user=bar"

-----
- user: '{{ user }}'

Укажите другой user на группу хостов в /etc/ansible/hosts

[targets]

localhost              ansible_connection=local
other1.example.com     ansible_connection=ssh        ansible_ssh_user=mpdehaan
other2.example.com     ansible_connection=ssh        ansible_ssh_user=mdehaan