导入用户、创建组、创建用户、创建OU.note

·注意:带有空格的 键,需要使用 ['键'] 来读取,例如这里的 ZIP Code

1、读取CSV文件,调用变量:
# 读取 csv文件:
使用 import_csv 来读取,并使用 register注册为变量
## 后续调用使用 loop来遍历变量,使用 item.Username 这样来获取里面的值(注意键的大小写是要区分的)

2、创建 OU:
·新模块:
# debian 13 使用 新模块:microsoft.ad.ou
## 如果被控端不是DC,就需要安装 adds tools,并且手动指定 domain_server、username、password
- name: create paris ou
microsoft.ad.ou:
name: "{{ item.ou.split(',')[0].split('=')[1] }}"
# name: ou_test //变量内容
domain_server: DC1.paris.local
domain_username: "PARIS\\Administrator" //两条斜杠是为了 转移反引号(不加双引号 反引号就不会生效)
domain_password: "{{ ansible_password }}"
loop: "{{ file_shares }}"
## 如果被控端是DC,直接创建即可
- name: create Lyon ou
microsoft.ad.ou:
name: "{{ item.ou.split(',')[0].split('=')[1] }}"
# name: ou_test //变量内容
# path:dc=paris,dc=local //(可选)自定义path,不加默认就是 根域下
loop: "{{ file_shares }}"·旧模块:
使用 community.windows.win_domain_ou 模块(这个模块没有内置简写,必须要写完整名称)
·也可以自定义路径:
使用 path 参数自定义路径


3、创建组:
·新模块:
# debian 13使用 新模块:microsoft.ad.group
### 新模块必须指定 scope(scope类型:)
## 如果被控端不是DC,就需要安装 adds tools,并且手动指定 domain_server、username、password
- name: create paris write group
microsoft.ad.group:
name: "{{ item.write }}"
# name: read_group //变量内容
path: "{{ item.ou.split(',')[0] }},dc=paris,dc=local"
# path: ou=ou_test,dc=paris,dc=local //变量内容
scope: global
domain_server: DC1.paris.local
domain_username: "PARIS\\Administrator"
domain_password: "{{ ansible_password }}"
loop: "{{ file_shares }}"
## 如果被控端是DC,直接创建即可
- name: create paris write group
microsoft.ad.group:
name: "{{ item.write }}"
# name: read_group //变量内容
path: "{{ item.ou.split(',')[0] }},dc=paris,dc=local"
# path: ou=ou_test,dc=paris,dc=local //变量内容
scope: global
loop: "{{ file_shares }}"·旧模块:
使用 win_domain_group 模块
需要注意,模块中需要加上 scope: global 来指定组的类型,否则无法创建组

之所以这么多是因为用户多,它是一个个遍历的,并且ansible创建组或用户特别慢
·也可以自定义路径:
使用 path 参数自定义路径


4、创建用户:
·新模块:
# debian 13 使用新模块:microsoft.ad.user·旧模块:
使用 win_domain_user 模块
# 如果参数太多记不住,可以使用 ansible-doc win_domain_user 然后检索到 examples那里查看示例,与 zealdoc中是一样的
# 或者直接只创用户,只指定密码和组,不设置属性,在后面使用 set-aduser 来指定属性,并且使用 notify 绑定前面的 win_domain_user模块# 要查看 attributes 支持的属性以及写法,可以在windows中执行:
get-aduser administrator -Properties * | Get-Member
## 可以使用 select-string 来过滤(类似于 grep)

ansible:
加上 update_password: on_create参数才能实现幂等,只会在创建用户时更新用户密码


·使用 set-aduser 单独指定用户属性:
使用 win_shell 模块单独调用 set-aduser
# 在命令外网使用双引号包裹,这样就能够在命令内使用变量 {{ item }},并且这样才能够在 变量{{ item }}外包裹字符串的单引号传给windows(防止内容有空格导致powershell无法识别命令)需要先提前创建出用户

可以多次执行,但是都是changed(可以加上notify关联前面的 win_domain_user 来实现幂等)

·也可以自定义路径:
使用 path 参数自定义路径

