![ansible playbook,不同操作系统的用户不同](https://linux22.com/image/612563/ansible%20playbook%EF%BC%8C%E4%B8%8D%E5%90%8C%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%94%A8%E6%88%B7%E4%B8%8D%E5%90%8C.png)
我开始玩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