我刚开始使用 Ansible。使用 Ansible 管理多个用户帐户时是否有最佳实践;(例如创建、禁用和删除用户帐户)。我认为从 csv 文件管理帐户会更早。我找不到任何参考或示例。
我在下面创建了以下测试。但为了可用性,似乎对 csv 文件运行此操作会更容易,而不必每次都编辑 yml 文件。
- hosts: servers
remote_user: root
tasks:
- name: adding several users
user:
name={{ item.name }}
state=present
comment={{ item.comment }}
password=$1$*)^%$CeUUJM&v#0pQhHjqjpqX1
update_password=on_create
createhome=yes
groups={{ item.groups }}
with_items:
- { name: 'testuser3', comment: 'testuser3', groups: 'wheel' }
- { name: 'testuser4', comment: 'testuser4', groups: 'users' }
感谢您的帮助。
答案1
文档中有一章很好:变量文件分离。
定义users.yml
:
users:
- name: testuser3
comment: testuser3
groups: wheel
- name: testuser4
comment: testuser4
groups: users
在你的剧本中:
- hosts: servers
remote_user: root
vars_files:
- /vars/users.yml
tasks:
- name: adding several users
user:
name: "{{ item.name }}"
state: present
comment: "{{ item.comment }}"
password: "$1$*)^%$CeUUJM&v#0pQhHjqjpqX1"
update_password: on_create
createhome: yes
groups: "{{ item.groups }}"
with_items: "{{ users }}"
PS:我还将参数语法改为 YAML,而不是key=value
– 相信我,它在复杂的剧本中更加强大。
如果您想在不同的主机上管理不同的用户集,您可能需要使用库存组/主机变量而不是播放级变量文件。
答案2
从 Ansible 2.8 版开始,有一个名为读取csv。
# Example CSV file with header
#
# name,uid,gid
# dag,500,500
# jeroen,501,500
# Read a CSV file and access the first item
- name: Read users from CSV file and return a list
read_csv:
path: users.csv
register: users
delegate_to: localhost
- debug:
msg: 'User {{ users.list.1.name }} has UID {{ users.list.1.uid }} and GID {{ users.list.1.gid }}'