arkanon

LDAP Manager

Jul 29th, 2018
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 29.72 KB | None | 0 0
  1. #!/usr/bin/env ansible-playbook
  2.  
  3. # ldapman.yml
  4.  
  5. # vim: ft=yaml
  6.  
  7. # Arkanon <paulo.bagatini@lsd.org.br>
  8. # 2018/07/03 (Tue) 17:52:21 -03
  9. # 2018/06/28 (Thu) 08:23:18 -03
  10. # 2018/06/27 (Wed) 16:56:36 -03
  11. # 2018/06/26 (Tue) 17:00:00 -03
  12. # 2018/06/25 (Mon) 08:51:09 -03
  13. # 2018/06/22 (Fri) 17:04:24 -03
  14. # 2018/06/15 (Fri) 16:52:37 -03
  15. # 2018/06/14 (Thu) 16:57:40 -03
  16. # 2018/06/07 (Thu) 17:04:21 -03
  17.  
  18.  
  19.  
  20. #  Os filtros [ SIDtoBase64, Base64toSID, GUIDtoBase64, Base64toGUID, Base64toCert, SIDtoID ]
  21. #    são definidos pelo plugin de filtro [plugins/filter/b64-2-str.py]
  22. #    o qual depende do módulo [plugins/sid.py]
  23.  
  24.  
  25.  
  26. #  listar   dados    do usuário no ad
  27. #  listar   dados    do usuário no ldap
  28. #  copiar   usuário             do ad
  29. #  listar   dados    do grupo   no ad
  30. #  listar   dados    do grupo   no ldap
  31. #  criar    grupo               no ldap
  32. #  remover  grupo               no ldap
  33. #  remover  usuário             do ldap
  34. #  associar usuários ao grupo   no ldap
  35.  
  36.  
  37.  
  38. #  índices
  39. #     u  informações do usuário / lista de usuários
  40. #     g  informações do grupo   / lista de grupos
  41. #     n  nome do usuário ou do grupo
  42. #     i  id do usuário   ou do grupo
  43. #     d  descrição
  44. #
  45. #  variáveis
  46. #    +U  grupo automático igual ao nome de usuário
  47. #    +P  grupo automático igual ao grupo primário no ad
  48. #    +D  grupo automático igual ao grupo default
  49. #    +A  id automático    igual ao próximo disponível
  50. #    +S  id automático derivado do sid no ad
  51. #
  52. #  defaults
  53. #     nome do usuário/grupo é obrigatório
  54. #        se o usuário existir no ad, será copiado para o ldap
  55. #     uid/gid é opcional
  56. #        nenhum uid implica em +S
  57. #        nenhum gid implica em +A
  58. #     lista de [grupos de um usuário]/[usuários de um grupo] é opcional
  59. #        primeiro grupo indicado será o grupo primário
  60. #        nenhum grupo indicado implica em +P como grupo primário
  61. #     descrição é opcional
  62. #
  63. #  exemplos
  64. #
  65. #    data=" { add: { u: [ { n: paulo.bagatini, i: +S } ] } } "
  66. #
  67. #    data="
  68. #           {
  69. #             add: {
  70. #                    u: [
  71. #                         { n: arkanon           , i: 10101 , g: [ +U , pb  , admin ] , },
  72. #                         { n: bagatini          , i: +A    , g: [ +D , pb  , admin ] , },
  73. #                         { n: paulo.bagatini    , i: +S    , g: [ +P , mib , admin ] , },
  74. #                         { n: eduardo.goncalves , d: Líder , g: [ +U , mib         ] , },
  75. #                         { n: andre.demathe                                          , },
  76. #                       ],
  77. #                    g: [
  78. #                         { n: teste         , i: 555 , d: 'Execução de testes'         , },
  79. #                         { n: monitoramento , i: +A  , u: [ bagatini , andre.demathe ] , },
  80. #                       ],
  81. #                  },
  82. #             del: {
  83. #                    u: [ bruno.freitas , arthur.sens , ],
  84. #                    g: [ teste                       , ],
  85. #                  },
  86. #           }
  87. #         "
  88. #
  89. #    ./ldapman.yml -e "{data:$data}"
  90.  
  91.  
  92.  
  93. ---
  94.  
  95.  
  96.  
  97.   - hosts: localhost
  98.  
  99.     gather_facts: no
  100.  
  101.     environment:
  102.       LDAPTLS_REQCERT: ALLOW
  103.  
  104.     tasks:
  105.  
  106.  
  107.       - name: initilize parameters
  108.         set_fact:
  109.          do='' if do is undefined
  110.           u=''  if u  is undefined
  111.           g=''  if g  is undefined
  112.  
  113.  
  114.  
  115.       - name: dump parameters final values
  116.         debug:
  117.           msg:
  118.            - " --------------------------------------------------- "
  119.             - "                                                     "
  120.             - "  runuser      = '{{ runuser      }}'                "
  121.             - "  do           = '{{ do           }}'                "
  122.             - "  u            = '{{ u            }}'                "
  123.             - "  g            = '{{ g            }}'                "
  124.             - "  user         = '{{ user         }}'                "
  125.             - "                                                     "
  126.             - " --------------------------------------------------- "
  127.  
  128.  
  129.  
  130.       # begin >> AD QUERY <<
  131.       - block:
  132.  
  133.  
  134.           - name: query user in ad server
  135.             shell: >
  136.              {{ ldapsearch }}
  137.               -H '{{ ad_server     }}'
  138.               -D '{{ ad_runuser_dn }}'
  139.               -w '{{ ad_runuser_pw }}'
  140.               -b '{{ ad_user_base  }}'
  141.               '{{ ad_user_filter }}'
  142.               {{ ad_user_attributes | d('') | join(' ') }}
  143.             register: ad_user_out
  144.  
  145.           - name: set ad_user_dict
  146.             set_fact:
  147.               ad_user_dict: >
  148.                {%- set list = item.split(': ', 1)                              -%}
  149.                 {%- set key  = list[0] | trim                                   -%}
  150.                 {%- set val  = list[1] | d('') | trim                           -%}
  151.                 {%- if key[-1] == ':'                                           -%}
  152.                 {%-   set key = key[:-1]                                        -%}
  153.                 {%-   if   key | lower is search('guid')                        -%}
  154.                 {%-     set val = val | Base64toGUID                            -%}
  155.                 {%-   elif key | lower is search('sid')                         -%}
  156.                 {%-     set val = val | Base64toSID                             -%}
  157.                 {%-   elif key | lower is search('certificate')                 -%}
  158.                 {%-     set val = val | Base64toCert                            -%}
  159.                 {%-   else                                                      -%}
  160.                 {%-     set val = val | b64decode                               -%}
  161.                 {%-   endif                                                     -%}
  162.                 {%- endif                                                       -%}
  163.                 {%- if ad_user_dict is defined and ad_user_dict[key] is defined -%}
  164.                 {%-   set val = [ [ ad_user_dict[key] ] + [ val ] ] | flatten   -%}
  165.                 {%- endif                                                       -%}
  166.                 {{  ad_user_dict | d({}) | combine( { key: val } )               }}
  167.             with_items: "{{ ad_user_out.stdout_lines | select('match', '^[^#]') | list }}"
  168.             # <http://adamretter.org.uk/blog/entries/active-directory-ldap-users-primary-group.xml>
  169.             # <http://en.wikipedia.org/wiki/Base64>
  170.             #  [A-Za-z0-9+/=]
  171.             #  ==  at final indicates that the last group contained only one byte
  172.             #  =   at final indicates that it contained two bytes
  173.  
  174.  
  175.  
  176.           - name: query user primary group in ad server
  177.             shell: >
  178.              {{ ldapsearch }}
  179.               -H '{{ ad_server     }}'
  180.               -D '{{ ad_runuser_dn }}'
  181.               -w '{{ ad_runuser_pw }}'
  182.               -b '{{ ad_group_base }}'
  183.               '{{ ad_group_filter }}={{ ad_user_dict.objectSid.split('-')[:-1] | join('-') }}-{{ ad_user_dict.primaryGroupID }}'
  184.               {{ ad_group_attributes | d('') | join(' ') }}
  185.             register: ad_pgroup_out
  186.  
  187.           - name: set ad_pgroup_dict
  188.             set_fact:
  189.               ad_pgroup_dict: >
  190.                {%- set list = item.split(': ', 1)                                  -%}
  191.                 {%- set key  = list[0] | trim                                       -%}
  192.                 {%- set val  = list[1] | d('') | trim                               -%}
  193.                 {%- if key[-1] == ':'                                               -%}
  194.                 {%-   set key = key[:-1]                                            -%}
  195.                 {%-   if   key | lower is search('guid')                            -%}
  196.                 {%-     set val = val | Base64toGUID                                -%}
  197.                 {%-   elif key | lower is search('sid')                             -%}
  198.                 {%-     set val = val | Base64toSID                                 -%}
  199.                 {%-   elif key | lower is search('certificate')                     -%}
  200.                 {%-     set val = val | Base64toCert                                -%}
  201.                 {%-   else                                                          -%}
  202.                 {%-     set val = val | b64decode                                   -%}
  203.                 {%-   endif                                                         -%}
  204.                 {%- endif                                                           -%}
  205.                 {%- if ad_pgroup_dict is defined and ad_pgroup_dict[key] is defined -%}
  206.                 {%-   set val = [ [ ad_pgroup_dict[key] ] + [ val ] ] | flatten     -%}
  207.                 {%- endif                                                           -%}
  208.                 {{  ad_pgroup_dict | d({}) | combine( { key: val } )                 }}
  209.             with_items: "{{ ad_pgroup_out.stdout_lines | select('match', '^[^#]') | list }}"
  210.  
  211.  
  212.  
  213.           - name: query user groups in ad server
  214.             shell: >
  215.              {{ ldapsearch }}
  216.               -H '{{ ad_server     }}'
  217.               -D '{{ ad_runuser_dn }}'
  218.               -w '{{ ad_runuser_pw }}'
  219.               -b '{{ ad_group_base }}'
  220.               '{{ ad_groups_filter }}={{ ad_user_dict.dn }}'
  221.               {{ ad_group_attributes | d('') | join(' ') }}
  222.             register: ad_groups_out
  223.  
  224.           - set_fact:
  225.               ad_groups_list:
  226.                "{{ ad_groups_out.stdout_lines | select('match', '^[^#]') | list + [ 'dn: fim' ] }}"
  227.               my:
  228.                 temp_dict : {}
  229.                 dict      : {}
  230.                 prev_key  : ''
  231.                 dict_key  : ''
  232.                 n         : 1
  233.  
  234.           - name: set ad_groups_dict
  235.             set_fact:
  236.               ad_groups_dict: >
  237.                {#-                                                                                                            -#}
  238.                 {#-                                                                                                            -#}
  239.                 {%- for l in ad_groups_list                                                                                    -%}
  240.                 {#-                                                                                                            -#}
  241.                 {#-                                                                                                            -#}
  242.                 {%-   do       my.update( { 'list'      : l.split(': ', 1)                                                 } ) -%}
  243.                 {%-   do       my.update( { 'key'       : my.list.0         | trim                                         } ) -%}
  244.                 {%-   do       my.update( { 'val'       : my.list.1 | d('') | trim                                         } ) -%}
  245.                 {#-                                                                                                            -#}
  246.                 {#-                                                                                                            -#}
  247.                 {%-   if my.key[-1] == ':'                                                                                     -%}
  248.                 {%-     do     my.update( { 'key'       : my.key[:-1]                                                      } ) -%}
  249.                 {%-     if   my.key | lower is search('guid')                                                                  -%}
  250.                 {%-       do   my.update( { 'val'       : my.val | Base64toGUID                                            } ) -%}
  251.                 {%-     elif my.key | lower is search('sid')                                                                   -%}
  252.                 {%-       do   my.update( { 'val'       : my.val | Base64toSID                                             } ) -%}
  253.                 {%-     elif my.key | lower is search('certificate')                                                           -%}
  254.                 {%-       do   my.update( { 'val'       : my.val | Base64toCert                                            } ) -%}
  255.                 {%-     else                                                                                                   -%}
  256.                 {%-       do   my.update( { 'val'       : my.val | b64decode                                               } ) -%}
  257.                 {%-     endif                                                                                                  -%}
  258.                 {%-   endif                                                                                                    -%}
  259.                 {#-                                                                                                            -#}
  260.                 {#-                                                                                                            -#}
  261.                 {%-   if my.key == my.prev_key                                                                                 -%}
  262.                 {%-     do     my.update( { 'all_val'   : [ [ my.all_val ] + [ my.val ] ] | flatten                        } ) -%}
  263.                 {%-   else                                                                                                     -%}
  264.                 {%-     do     my.update( { 'all_val'   : my.val } )                                                           -%}
  265.                 {%-   endif                                                                                                    -%}
  266.                 {#-                                                                                                            -#}
  267.                 {#-                                                                                                            -#}
  268.                 {%-   if my.key == 'dn'                                                                                        -%}
  269.                 {%-     if my.dict_key != ''                                                                                   -%}
  270.                 {#-                                                                                                            -#}
  271.                 {%-       do   my.update( { 'sn'        : my.n | string + ' '                                              } ) -%}
  272.                 {%-       if my.n < 10                                                                                         -%}
  273.                 {%-         do my.update( { 'sn'        : ' ' + my.sn                                                      } ) -%}
  274.                 {%-       else                                                                                                 -%}
  275.                 {%-         do my.update( { 'sn'        :       my.sn                                                      } ) -%}
  276.                 {%-       endif                                                                                                -%}
  277.                 {#-                                                                                                            -#}
  278.                 {%-       do   my.update( { 'temp_dict' : my.temp_dict | combine( {         my.key      : my.prev_val  } ) } ) -%}
  279.                 {%-       do   my.update( { 'dict'      : my.dict      | combine( {         my.dict_key : my.temp_dict } ) } ) -%}
  280.                 {#-       do   my.update( { 'dict'      : my.dict      | combine( { my.sn + my.dict_key : my.temp_dict } ) } ) -#}
  281.                 {%-       do   my.update( { 'n'         : my.n + 1                                                         } ) -%}
  282.                 {%-       do   my.update( { 'temp_dict' : {}                                                               } ) -%}
  283.                 {%-     endif                                                                                                  -%}
  284.                 {%-     do     my.update( { 'prev_val'  : my.all_val                                                       } ) -%}
  285.                 {%-   else                                                                                                     -%}
  286.                 {%-     do     my.update( { 'temp_dict' : my.temp_dict | combine( { my.key: my.all_val                 } ) } ) -%}
  287.                 {%-   endif                                                                                                    -%}
  288.                 {#-                                                                                                            -#}
  289.                 {#-                                                                                                            -#}
  290.                 {%-   if my.key == 'cn'                                                                                        -%}
  291.                 {%-     do     my.update( { 'dict_key'  : my.all_val                                                       } ) -%}
  292.                 {%-   endif                                                                                                    -%}
  293.                 {#-                                                                                                            -#}
  294.                 {#-                                                                                                            -#}
  295.                 {%-   do       my.update( { 'prev_key'  : my.key                                                           } ) -%}
  296.                 {#-                                                                                                            -#}
  297.                 {#-                                                                                                            -#}
  298.                 {%- endfor                                                                                                     -%}
  299.                 {#-                                                                                                            -#}
  300.                 {#-                                                                                                            -#}
  301.                 {{  my.dict  }}
  302.  
  303.  
  304.  
  305.         when: do != '' and g == ''
  306.       # end >> AD QUERY <<
  307.  
  308.  
  309.  
  310.       # begin >> LDAP MANAGE <<
  311.       - block:
  312.  
  313.  
  314.           # begin >> ldap user manage <<
  315.           - block:
  316.               - name: delete user ldap entry
  317.                 ldap_entry:
  318.                   state      : absent
  319.                   server_uri : "{{ ldap_server     }}"
  320.                   bind_dn    : "{{ ldap_manager_dn }}"
  321.                   bind_pw    : "{{ ldap_manager_pw }}"
  322.                   dn         : "uid={{ user }},{{ ldap_user_base }}"
  323.                 when: do == 'd'
  324.  
  325.               - name: add user ldap entry
  326.                 ldap_entry:
  327.                   state      : present
  328.                   server_uri : "{{ ldap_server     }}"
  329.                   bind_dn    : "{{ ldap_manager_dn }}"
  330.                   bind_pw    : "{{ ldap_manager_pw }}"
  331.                   dn         : "uid={{ user }},{{ ldap_user_base }}"
  332.                   objectClass:
  333.                    - top
  334.                     - inetOrgPerson
  335.                     - posixAccount
  336.                     - shadowAccount
  337.                   attributes:
  338.                     userPassword               : "{CRYPT}*"
  339.                     loginShell                 : "/bin/bash"
  340.                     homeDirectory              : "/home/{{ user }}"
  341.                     gidNumber                  : "{{ ad_pgroup_dict.objectSid | SIDtoID           }}"
  342.                     uidNumber                  : "{{ ad_user_dict.objectSid   | SIDtoID           }}"
  343.                     description                : "{{ ad_user_dict.givenName }} {{ ad_user_dict.sn }}"
  344.                     o                          : "{{ ad_user_dict.company                         }}"
  345.                     ou                         : "{{ ad_user_dict.department                      }}"
  346.                     cn                         : "{{ ad_user_dict.givenName                       }}"
  347.                     sn                         : "{{ ad_user_dict.sn                              }}"
  348.                     mail                       : "{{ ad_user_dict.mail                            }}"
  349.                     title                      : "{{ ad_user_dict.title                           }}"
  350.                     manager                    : "{{ ad_user_dict.manager                         }}"
  351.                     telephoneNumber            : "{{ ad_user_dict.telephoneNumber                 }}"
  352.                     physicalDeliveryOfficeName : "{{ ad_user_dict.physicalDeliveryOfficeName      }}"
  353.                 when: do == 'a'
  354.  
  355.             when: u != '' and g == ''
  356.           # end >> ldap user manage <<
  357.  
  358.  
  359.  
  360.           # begin >> ldap group manage <<
  361.           - block:
  362.               - name: remove empty keys from group.attributes
  363.                 set_fact:
  364.                   attributes: "{{ attributes | d({}) | combine({item.key: item.value}) }}"
  365.                 when: item.value != ''
  366.                 with_dict: "{{ group.attributes }}"
  367.  
  368.               - name: delete group ldap entry
  369.                 ldap_entry:
  370.                   state      : absent
  371.                   server_uri : "{{ ldap_server     }}"
  372.                   bind_dn    : "{{ ldap_manager_dn }}"
  373.                   bind_pw    : "{{ ldap_manager_pw }}"
  374.                   dn         : "cn={{ group.name }},{{ ldap_group_base }}"
  375.                 when: do == 'd'
  376.  
  377.               - name: add group ldap entry
  378.                 ldap_entry:
  379.                   state      : present
  380.                   server_uri : "{{ ldap_server     }}"
  381.                   bind_dn    : "{{ ldap_manager_dn }}"
  382.                   bind_pw    : "{{ ldap_manager_pw }}"
  383.                   dn         : "cn={{ group.name }},{{ ldap_group_base }}"
  384.                   objectClass:
  385.                    - top
  386.                     - posixGroup # ldapsearch -o ldif-wrap=no -H ldap://172.23.2.61 -x -s base -b cn=subschema objectclasses | grep --color -E '^|.*posixGroup.*'
  387.                   attributes: "{{ attributes }}"
  388.                 when: do == 'a'
  389.  
  390.             when: u == '' and g != ''
  391.           # end >> ldap group manage <<
  392.  
  393.  
  394.  
  395.         when: do != ''
  396.       # end >> LDAP MANAGE <<
  397.  
  398.  
  399.  
  400.       # begin >> LDAP QUERY <<
  401.       - block:
  402.  
  403.  
  404.           # begin >> ldap user query <<
  405.           - block:
  406.               - name: query user in ldap server
  407.                 shell: >
  408.                  {{ ldapsearch }}
  409.                   -H '{{ ldap_server     }}'
  410.                   -D '{{ ldap_manager_dn }}'
  411.                   -w '{{ ldap_manager_pw }}'
  412.                   -b '{{ ldap_user_base  }}'
  413.                   '{{ ldap_user_filter }}'
  414.                   {{ ldap_attributes | d('') | join(' ') }}
  415.                 register: ldap_user_out
  416.  
  417.               - name: set ldap_user_dict
  418.                 set_fact:
  419.                   ldap_user_dict: >
  420.                    {%- set list = item.split(': ', 1)                                  -%}
  421.                     {%- set key  = list[0] | trim                                       -%}
  422.                     {%- set val  = list[1] | d('') | trim                               -%}
  423.                     {%- if key[-1] == ':'                                               -%}
  424.                     {%-   set key = key[:-1]                                            -%}
  425.                     {%-   if   key | lower is search('guid')                            -%}
  426.                     {%-     set val = val | Base64toGUID                                -%}
  427.                     {%-   elif key | lower is search('sid')                             -%}
  428.                     {%-     set val = val | Base64toSID                                 -%}
  429.                     {%-   elif key | lower is search('certificate')                     -%}
  430.                     {%-     set val = val | Base64toCert                                -%}
  431.                     {%-   else                                                          -%}
  432.                     {%-     set val = val | b64decode                                   -%}
  433.                     {%-   endif                                                         -%}
  434.                     {%- endif                                                           -%}
  435.                     {%- if ldap_user_dict is defined and ldap_user_dict[key] is defined -%}
  436.                     {%-   set val = [ [ ldap_user_dict[key] ] + [ val ] ] | flatten     -%}
  437.                     {%- endif                                                           -%}
  438.                     {{  ldap_user_dict | d({}) | combine( { key: val } )                 }}
  439.                 with_items: "{{ ldap_user_out.stdout_lines | select('match', '^[^#]') | list }}"
  440.  
  441.               - name: dump user facts
  442.                 debug:
  443.                   msg:
  444.                     01 ad_user_out    : "{{ ad_user_out.stdout_lines   }}"
  445.                     02 ad_user_dict   : "{{ ad_user_dict               }}"
  446.                     03 ldap_user_out  : "{{ ldap_user_out.stdout_lines }}"
  447.                     04 ldap_user_dict : "{{ ldap_user_dict | d('')     }}"
  448.  
  449.             when: g == ''
  450.           # end >> ldap user query <<
  451.  
  452.  
  453.  
  454.           # begin >> ldap group query <<
  455.           - block:
  456.               - name: search group in ldap server
  457.                 shell: >
  458.                  ldapsearch
  459.                   -N
  460.                   -LLL
  461.                   -z  none
  462.                   -o  ldif-wrap=no
  463.                   -E  pr=1000/noprompt
  464.                   -H '{{ ldap_server     }}'
  465.                   -D '{{ ldap_manager_dn }}'
  466.                   -w '{{ ldap_manager_pw }}'
  467.                   -b '{{ ldap_group_base }}'
  468.                   '{{ ldap_group_filter }}'
  469.                   {{ ldap_attributes | d('') | join(' ') }}
  470.                 register: ldap_group_out
  471.  
  472.               - name: set ldap_group_dict
  473.                 set_fact:
  474.                   ldap_group_dict: >
  475.                    {%- set list = item.split(': ', 1)                                    -%}
  476.                     {%- set key  = list[0] | trim                                         -%}
  477.                     {%- set val  = list[1] | d('') | trim                                 -%}
  478.                     {%- if key[-1] == ':'                                                 -%}
  479.                     {%-   set key = key[:-1]                                              -%}
  480.                     {%-   if   key | lower is search('guid')                              -%}
  481.                     {%-     set val = val | Base64toGUID                                  -%}
  482.                     {%-   elif key | lower is search('sid')                               -%}
  483.                     {%-     set val = val | Base64toSID                                   -%}
  484.                     {%-   elif key | lower is not search('certificate')                   -%}
  485.                     {%-     set val = val | b64decode                                     -%}
  486.                     {%-   endif                                                           -%}
  487.                     {%- endif                                                             -%}
  488.                     {%- if ldap_group_dict is defined and ldap_group_dict[key] is defined -%}
  489.                     {%-   set val = [ [ ldap_group_dict[key] ] + [ val ] ] | flatten      -%}
  490.                     {%- endif                                                             -%}
  491.                     {{  ldap_group_dict | d({}) | combine( { key: val } )                  }}
  492.                 with_items: "{{ ldap_group_out.stdout_lines | select('match', '^[^#]') | list }}"
  493.  
  494.               - name: dump group facts
  495.                 debug:
  496.                   msg:
  497.                     01 group           : "{{ group                       }}"
  498.                     02 ad_pgroup_out   : "{{ ad_pgroup_out.stdout_lines  }}"
  499.                     03 ad_pgroup_dict  : "{{ ad_pgroup_dict              }}"
  500.                     04 ad_groups_out   : "{{ ad_groups_out.stdout_lines  }}"
  501.                     05 ad_groups_dict  : "{{ ad_groups_dict              }}"
  502.                     06 ldap_group_out  : "{{ ldap_group_out.stdout_lines }}"
  503.                     07 ldap_group_dict : "{{ ldap_group_dict | d('')     }}"
  504.  
  505.           # when: u == ''
  506.           # end >> ldap group query <<
  507.  
  508.  
  509.  
  510.         when: do == 'l'
  511.       # end >> LDAP QUERY <<
  512.  
  513.  
  514.  
  515.       - name: help
  516.         debug:
  517.           msg:
  518.            - " ------------------------------------------------------------------------------ "
  519.             - "                                                                                "
  520.             - "  Acrescente (em qualquer ordem)                                                "
  521.             - "                                                                                "
  522.             - "    -e do=l|a|d                             lista|adiciona|deleta entrada ldap  "
  523.             - "    -e u=<user>:[uid]:[descr]:[primgroup]   age no usuário                      "
  524.             - "    -e g=<group>:[gid]:[descr]              age no grupo                        "
  525.             - "                                                                                "
  526.             - "  Grupo primário:                                                              "
  527.            - "    default           : '{{ defmaingroup }}'                                    "
  528.            - "    igual ao username : 'u'                                                     "
  529.            - "                                                                                "
  530.            - "{{ data }}"
  531.            - "                                                                                "
  532.            - " ------------------------------------------------------------------------------ "
  533.        when: do+u+g in [ '', 'a', 'd' ]
  534.  
  535.  
  536.  
  537. # EOF
Add Comment
Please, Sign In to add comment