我已在服务器上安装并配置Ansible以进行配置管理。
在 / etc / ansible / hosts 文件下,我添加了[servers]部分,并提到了我需要维护的所有服务器
我有一个 Ubuntu 服务器
在我的 test.yml 文件中,我编写了这段代码,
---
- hosts: servers
become: yes
tasks:
- name: Add user
user:
name: james
shell: /bin/bash
groups: wheel
state: present
remove: yes
问题是在Ubuntu中没有 wheel 组,但 sudo 是。
所以我希望该服务器在sudo组中添加用户,并让其他人添加到wheel组
我如何在该代码的ansible中做条件
答案 0 :(得分:3)
您可以根据ref的分布情况包含变量。
Ansible在description = et.fromstring("<volltext>%s</volltext>" % cls.escape(job.description))
事实中保存目标系统分布的值。
在您的任务中使用变量(ansible_distribution
)而不是字符串:
group_for_james
在游戏中为用户定义默认值:
- name: Add user
user:
name: james
shell: /bin/bash
groups: "{{ group_for_james }}"
state: present
remove: yes
然后为Ubuntu创建一个vars文件(例如将其保存为vars:
group_for_james: wheel
):
vars/ubuntu.yml
添加一个任务(在group_for_james: sudo
任务之前),如果目标正在运行Ubuntu,它将覆盖该值:
Add user
其他包含模式也是可能的,请参阅链接文档页面上的第三个示例。