Univention-join - -- FAILED: 05univention-bind.inst

I’m using docker container for run slave ucs.

docker run -d --name slave1_container --hostname=slave1 \
    -e domainname=corp.softwarelab.net \
    -e rootpwd=tibco -p 8013:80 \
    -e nameserver1=192.168.0.11 \
    -e container=docker \
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    --tmpfs /run --tmpfs /run/lock \
    --cap-add=SYS_ADMIN \
    --restart unless-stopped \
    univention/ucs-slave-amd64 /sbin/init

When I launched univention-join as Administrator i got error

root@slave1-ucs:/var/log/univention# univention-join -verbose
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_IE.UTF-8)
univention-join: joins a computer to an ucs domain
copyright (c) 2001-2018 Univention GmbH, Germany

Enter DC Master Account : Administrator
Enter DC Master Password: 

Search DC Master:                                          done
Check DC Master:                                           done
Stop LDAP Server:                                          done
Search ldap/base                                           done
Start LDAP Server:                                         done
Search LDAP binddn                                         done
Join Computer Account:                                     done
Stopping univention-directory-listener daemon:             done
Sync ldap-backup.secret:                                   done
Check TLS connection:                                      done
Download host certificate:                                 done
Restart LDAP Server:                                       done
Sync Kerberos settings:                                    done
Not updating kerberos/adminserver
Configure 01univention-ldap-server-init.inst               done
Configure 03univention-directory-listener.inst             done
Configure 04univention-ldap-client.inst                    done
Configure 05univention-bind.inst                           failed


**************************************************************************
* Join failed!                                                           *
* Contact your system administrator                                      *
**************************************************************************
* Message:  Please visit https://help.univention.com/t/8842 for common problems during the join and how to fix them -- FAILED: 05univention-bind.inst

In join.log I saw what my ip doesn’t defended

+ test -z '' -a -z slave1-ucs.corp.softwarelab.net
+ '[' 0 = 0 ']'
+ wait_for_dns
+ '[' domaincontroller_slave '!=' domaincontroller_master ']'
+ (( i=0 ))
+ (( i<600 ))
+ echo 'wait for named ?'
wait for named ?
+ host -W 1 ucs1.corp.softwarelab.net
+ grep -Fq 'timed out'
+ break
++ get_default_ip_address
++ PYTHONPATH=/usr/lib/pymodules/python2.7/univention/config_registry
++ python2.7 -c 'from interfaces import Interfaces;print Interfaces().get_default_ip_address().ip'
+ IP=
++ get_default_netmask
++ PYTHONPATH=/usr/lib/pymodules/python2.7/univention/config_registry
++ python2.7 -c 'from interfaces import Interfaces;import ipaddr;a=Interfaces().get_default_ip_address();print a.netmask if isinstance(a,ipaddr.IPv4Network) else a.prefixlen'
+ NETMASK=
++ grep '^DN:'
++ univention-directory-manager dns/forward_zone list --binddn uid=Administrator,cn=users,dc=corp,dc=softwarelab,dc=net --bindpwd univention   --filter zone=corp.softwarelab.net
+ zone='DN: zoneName=corp.softwarelab.net,cn=dns,dc=corp,dc=softwarelab,dc=net'
+ '[' -z 'DN: zoneName=corp.softwarelab.net,cn=dns,dc=corp,dc=softwarelab,dc=net' ']'
+ wait_for_dns
+ '[' domaincontroller_slave '!=' domaincontroller_master ']'
+ (( i=0 ))
+ (( i<600 ))
+ echo 'wait for named ?'
wait for named ?
+ host -W 1 ucs1.corp.softwarelab.net
+ grep -Fq 'timed out'
+ break
+ ERRMSG='Failed adding the DNS host record slave1-ucs () to zone corp.softwarelab.net.'
+ exec_log_failure /usr/share/univention-admin-tools/univention-dnsedit --binddn uid=Administrator,cn=users,dc=corp,dc=softwarelab,dc=net --bindpwd univention   --ignore-exists corp.softwarelab.net add a sl
ave1-ucs ''
+ local output
+ local rc
++ /usr/share/univention-admin-tools/univention-dnsedit --binddn uid=Administrator,cn=users,dc=corp,dc=softwarelab,dc=net --bindpwd univention   --ignore-exists corp.softwarelab.net add a slave1-ucs ''
+ output='Adding A record "slave1-ucs " to zone corp.softwarelab.net...
done'
+ rc=0
+ '[' 0 -ne 0 ']'
+ echo 'Adding A record "slave1-ucs " to zone corp.softwarelab.net...
done'
Adding A record "slave1-ucs " to zone corp.softwarelab.net...
done
+ return 0
++ univention-ipcalc6 --netmask '' --ip '' --output reverse --calcdns
'' does not appear to be an IPv4 or IPv6 address
+ reversezone=
+ '[' -z '' ']'
+ exit 1

My master and slave see one-to-one by DNS name and ip adress.
Notice: slave - docker, master - VM.

My problem is here

++ get_default_ip_address
++ PYTHONPATH=/usr/lib/pymodules/python2.7/univention/config_registry
++ python2.7 -c 'from interfaces import Interfaces;print Interfaces().get_default_ip_address().ip'
+ IP=
++ get_default_netmask
++ PYTHONPATH=/usr/lib/pymodules/python2.7/univention/config_registry
++ python2.7 -c 'from interfaces import Interfaces;import ipaddr;a=Interfaces().get_default_ip_address();print a.netmask if isinstance(a,ipaddr.IPv4Network) else a.prefixlen'
+ NETMASK=

When I called in container python code i didn’t get parameters .ip for .get_default_ip_address

>>> dir(Interfaces().get_default_ip_address())  
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

But when I launched same row on master node with work in VM response was with more options:

>>> dir(Interfaces().get_default_ip_address())
['AddressExclude', 'CompareNetworks', 'Contains', 'IsLinkLocal', 'IsLoopback', 'IsMulticast', 'IsRFC1918', 'Subnet', 'Supernet', '_ALL_ONES', '_DECIMAL_DIGITS', '__class__', '__contains__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_cache', '_explode_shorthand_ip_string', '_get_networks_key', '_ip', '_ip_int_from_prefix', '_ip_int_from_string', '_max_prefixlen', '_parse_octet', '_prefix_from_ip_int', '_prefix_from_ip_string', '_prefix_from_prefix_string', '_prefixlen', '_string_from_ip_int', '_version', 'address_exclude', 'broadcast', 'compare_networks', 'compressed', 'exploded', 'hostmask', 'ip', 'is_link_local', 'is_loopback', 'is_multicast', 'is_private', 'is_reserved', 'is_unspecified', 'iter_subnets', 'iterhosts', 'masked', 'max_prefixlen', 'netmask', 'network', 'numhosts', 'overlaps', 'packed', 'prefixlen', 'subnet', 'supernet', 'version', 'with_hostmask', 'with_netmask', 'with_prefixlen']

The interfaces module extracts that data from the corresponding UCR variables. Relevant variables are: interfaces/primary, interfaces/<nameOfPrimaryInterface>/address etc. Those variables are most likely not set inside the Docker container as Docker itself configures the interface already, not the components inside the container.

Thanks, and What I can do as workaround in my case?

Try setting the variables?

I added variables to univention-join script
IP=172.17.0.2
NETMASK=255.255.0.0

and did export to environment
export NETMASK=255.255.0.0
export P=172.17.0.2
but it didn’t help me. Maybe I not well understood your text?

I meant that you should try setting the corresponding UCR variables in your Docker container. Compare ucr search interfaces/ on your host & your Docker container.

Nice! I set two variables
ucr set interfaces/eth0/broadcast=172.17.255.255
ucr set interfaces/eth0/netmask=255.255.0.0
because others was defended(address and network), then launched univention-join and my script finished success.