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

noteId: WEBed776b77369e69be64b73203495dd57a · 原始路径:/ALL/Ansible 自动化管理/Ansible 配置合集/Ansible 自动化管理-Windows/对AD域操作的模块(合集)/导入用户、创建组、创建用户、创建OU.note · 图片:22 · 附件待处理:5

 
 
 
·注意:带有空格的 键,需要使用 ['键'] 来读取,例如这里的 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 参数自定义路径