ansible playbook,不同操作系统的用户不同

ansible playbook,不同操作系统的用户不同

我开始玩ansible。我有一堆服务器(Ubuntu、Centos、Red hat……)。

服务器有不同的用户。对于 ubuntu 服务器,我使用 sudo 用户,对于其余服务器,我使用 root 用户。

我如何通过操作系统指定用户?

答案1

文档提及仅针对特定操作系统执行任务。您可以调整它以针对每个操作系统设置用户。例如

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

- hosts: Debian
  user: default
  - # some tasks

- hosts: Ubuntu
  user: ubuntu
  - # some tasks

在源代码中,似乎这些操作系统受到支持,尽管在撰写本文时我无法在官方文档中确认这一点。

  • 红帽
  • Fedora
  • CentOS
  • 科学
  • 速尔
  • 阿森多斯
  • 云Linux
  • 粒子束弹道导弹
  • 甲骨文Linux
  • 光学成像系统
  • 职业接触限值
  • 亚马逊
  • Xen服务器
  • Ubuntu
  • Debian
  • 系统性红斑狼疮
  • 雪橇
  • OpenSuSE
  • 苏西
  • Gentoo
  • ArchLinux
  • 曼德里瓦
  • 曼德拉草
  • 索拉里斯
  • 尼克森塔
  • 奥姆尼
  • 印第安纳公开赛
  • 智能操作系统

您还可以在文件中定义每个操作系统的变量vars/<os-name>.yaml,并使用ansible_os_family模板变量有条件地使用它们,如下所示这里

答案2

CentOS 等不是自动的。它是 ansible 提供的变量的组。这是一个完整的示例,处理 CentOS 加 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

答案3

指定用户命令行

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

相关内容