Salt ldap.managed 'Tuple_to_LDAPMod' 'ожидал кортежа' - PullRequest
1 голос
/ 06 ноября 2019

У меня есть новый мастер соли в новой системе, и я проверяю некоторые из моих ранее существовавших состояний.

Я дошел до того, что сейчас проверяю способность Солтаобновите LDAP, и, хотя он может успешно подключиться, теперь он выдает ошибку при попытке обновить одно значение. Я удалил вещи для тестирования и получил следующее:

sls:

ldapi-base:
  ldap.managed:
    - connect_spec:
        url: ldapi:///
        bind:
          method: simple
          dn: {{ salt['pillar.get']('ldapi-admin:admin') }}
          password: "{{ salt['pillar.get']('ldapi-admin:adminpw') }}"

    - entries:

      - dc=domain,dc=com: 
        - delete_others: True
        - replace: 
            objectClass: 
              - dcObject
              - organization
            dc: domain

Сообщение об ошибке:

      ID: ldapi-base
Function: ldap.managed
  Result: False
 Comment: An exception occurred in this state: Traceback (most recent call last):
            File "/var/tmp/.saltguru_c0a32f_salt/pyall/salt/state.py", line 1933, in call
              **cdata['kwargs'])
            File "/var/tmp/.saltguru_c0a32f_salt/pyall/salt/loader.py", line 1951, in wrapper
              return f(*args, **kwargs)
            File "/var/tmp/.saltguru_c0a32f_salt/pyall/salt/states/ldap.py", line 334, in managed
              __salt__['ldap3.add'](l, dn, n)
            File "/var/tmp/.saltguru_c0a32f_salt/pyall/salt/modules/ldap3.py", line 414, in add
              l.c.add_s(dn, modlist)
            File "/usr/local/lib/python3.6/site-packages/ldap/ldapobject.py", line 428, in add_s
              return self.add_ext_s(dn,modlist,None,None)
            File "/usr/local/lib/python3.6/site-packages/ldap/ldapobject.py", line 413, in add_ext_s
              msgid = self.add_ext(dn,modlist,serverctrls,clientctrls)
            File "/usr/local/lib/python3.6/site-packages/ldap/ldapobject.py", line 410, in add_ext
              return self._ldap_call(self._l.add_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
            File "/usr/local/lib/python3.6/site-packages/ldap/ldapobject.py", line 313, in _ldap_call
              result = func(*args,**kwargs)
          TypeError: ('Tuple_to_LDAPMod(): expected a tuple', [('objectClass', [b'dcObject', b'organization']), ('dc', [b'domain'])])
 Started: 15:50:22.329045
Duration: 6.884 ms
 Changes:

Я смотрел на него идорабатывать его целую вечность, все безрезультатно. Сначала я думал, что это проблема форматирования, поэтому различные элементы были перемешаны и даже удалены. Если я удаляю и dc & objectClass, состояние проходит успешно (но, разумеется, оно ничего не делает).

Я также рассмотрел несколько проблем, перечисленных на Github, и исследовалнесколько (# 53232, # 52022) и даже обновленные (я изначально работал с 2019.2.0). Система, которую я первоначально использовал (сейчас списана), я считаю, была вариантом 2018.xy, но она работала без проблем.

Может кто-нибудь предложить какие-либо предложения, пожалуйста? Насколько я могу судить из примера вывода, он выглядит как кортеж ..

salt --versions-report:

Salt Version:                                                                                                                                      
           Salt: 2019.2.2                                                                                                                          


Dependency Versions:                                                                                                                               
           cffi: 1.12.3                                                                                                                            
       cherrypy: Not Installed                                                                                                                     
       dateutil: Not Installed                                                                                                                     
      docker-py: Not Installed                                                                                                                     
          gitdb: 2.0.5                                                                                                                             
      gitpython: 2.1.11                                                                                                                            
          ioflo: Not Installed                                                                                                                     
         Jinja2: 2.10.1                                                                                                                            
        libgit2: 0.28.1                                                                                                                            
        libnacl: Not Installed                                                                                                                     
       M2Crypto: Not Installed                                                                                                                     
           Mako: Not Installed                                                                                                                     
   msgpack-pure: Not Installed                                                                                                                     
 msgpack-python: 0.6.1                                                                                                                             
   mysql-python: Not Installed                                                                                                                     
      pycparser: 2.19                                                                                                                              
       pycrypto: 2.6.1                                                                                                                             
   pycryptodome: Not Installed                                                                                                                     
         pygit2: 0.28.0                                                                                                                            
         Python: 3.6.9 (default, Aug 22 2019, 01:16:05)                                                                                            
   python-gnupg: Not Installed                                                                                                                     
         PyYAML: 5.1                                                                                                                               
          PyZMQ: 18.1.0                                                                                                                            
           RAET: Not Installed                                                                                                                     
          smmap: 2.0.5                                                                                                                             
        timelib: Not Installed                                                                                                                     
        Tornado: 4.5.3                                                                                                                             
            ZMQ: 4.3.1                                                                                                                             


System Versions:                                                                                                                                   
           dist:                                                                                                                                   
         locale: US-ASCII                                                                                                                          
        machine: amd64                                                                                                                             
        release: 12.0-RELEASE                                                                                                                      
         system: FreeBSD                                                                                                                           
        version: Not Installed

Редактировать:

Если я добавлю параметр test=true в команду соли, я получу следующий результат:

      ID: ldapi-base
Function: ldap.managed
  Result: None
 Comment: Would change LDAP entries
 Started: 12:44:54.110453
Duration: 2.371 ms
 Changes:   
          ----------
          dc=domain,dc=com:
              ----------
              new:
                  ----------
                  dc:
                      - domain
                  o:
                      - myOrg
                  objectClass:
                      - dcObject
                      - organization
                      - top
              old:
                  None

Выглядит так, как будто все с солью хорошо, но все, что он передаетСледующий этап не так ли?

И да, поле назначения, на которое он указывает, также является новым, без данных.

Редактировать 2:

Tuple_to_LDAPMod отображается вбыть функцией python-ldap, основанной на этой ссылке на коммит, где я могу найти сообщение об ошибке, которое я получаю. Коммит - обновить сообщение об ошибке до чего-то более значимого.

Редактировать 3:

Обновлен py36-ldap с 3.1.0 до 3.2.0, без эффекта.

Редактировать 4:

Воскрешил моего старого выведенного из строя мастера, основанного на Gentoo / Salt 2018.3.3. Пришлось разобраться с парой проблем, которые обновили Salt до 2018.3.4 (также протестирован 2019.2.2). Может воспроизводить проблему, поэтому, возможно, цель - проблема, или что-то еще происходит. Рассматривая его как проблему на Github в SaltStack

Редактировать 5:

Вопрос отправлен в группу пользователей Salt (рекомендуется следующий шаг).

1 Ответ

0 голосов
/ 07 ноября 2019

Я не знаком солевым стеком, но вижу, что вы пытаетесь обновить dc=domain,dc=com, чтобы он использовал objectClass dcObject и organization.

(или одна) проблема заключается в том, что organization является структурным объектным классом, для которого требуется атрибут o, поэтому его необходимо указать, поскольку delete_others имеет значение True.

  - dc=domain,dc=com: 
    - delete_others: True
    - replace: 
        objectClass: 
          - dcObject
          - organization
        dc: domain
        o: yourOrganization

Возможно, вам также придется включить top в objectClass, если соль по умолчанию еще не добавлена.

...