خادوم المعسكرات المتقدم
هذه الوصفة تسعى لإنشاء خادوم يقدم إستيثاق مركزي بإستخدام LDAP، خادم تخزين مركزي وخوادم بنية شبكة (إعداد شبكة تلقائي وخادم أسماء) تستخدم إل داب.
إعداد خادم خبيئة الحزم
هناك عدّة خيارات لإعداد خادم خبيئة الحزم (package caching)، لكننا سنستخدم squid-deb-proxy المعد مسبقا للعمل مع اوبونتو (ويمكن تعديل الإعدادات ليشمل مخازن حزم deb اخرى)
puppet manifest for squid-deb-proxy |
---|
package { 'squid-deb-proxy-client': ensure => installed } |
sudo apt-get install squid-deb-proxy
وعلى الأجهزة "الزبونة" والخوادم الأخرى، يفضل تثبيت الحزمة squid-deb-proxy-client حيث أنها تسمح بالإستكشاف التلقائي لخادم خبيئة الحزم!
sudo apt-get install squid-deb-proxy-client
إعداد خادم الدليل - إل داب
لتثبيت أوبن إل داب[1]:
sudo apt-get install slapd ldap-utils
لتثبيت ربط إل داب بسامبا:
sudo apt-get install samba-doc smbldap-tools
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ sudo gzip -d /etc/ldap/schema/samba.schema.gz
cat << EOF > /tmp/schema_convert.conf include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/samba.schema EOF
mkdir /tmp/ldif_output
while read line; do slapcat -f /tmp/schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={$count}`echo $line | cut -f5 -d\/`,cn=schema,cn=config" ; count=`expr $count + 1`; done < /tmp/schema_convert.conf
cd /tmp/ldif_output/cn=config/cn=schema sed -i "s/\(dn: cn=.*\)/\1,cn=schema,cn=config/g" *
for i in * ; do head -n -7 $i > $i.tmp ; mv $i.tmp $i ; done
cd /tmp/ldif_output/cn\=config/cn\=schema/ && ls | sort -V | while read line ; do sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $line ; done
للبدء في إنشاء مدخلات إل داب ضع الآتي في ملف مطبقا التغييرات التي تحتاجها:
# Load dynamic backend modules dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_hdb # Database settings dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: dc=adefcamps,dc=org olcDbDirectory: /var/lib/ldap olcRootDN: cn=adefadmin,dc=adefcamps,dc=org olcRootPW: secret olcDbConfig: set_cachesize 0 2097152 0 olcDbConfig: set_lk_max_objects 1500 olcDbConfig: set_lk_max_locks 1500 olcDbConfig: set_lk_max_lockers 1500 olcDbIndex: objectClass eq olcLastMod: TRUE olcDbCheckpoint: 512 30 olcAccess: to attrs=userPassword by dn="cn=adefadmin,dc=adefcamps,dc=org" write by anonymous auth by self write by * none olcAccess: to attrs=shadowLastChange by self write by * read olcAccess: to dn.base="" by * read olcAccess: to * by dn="cn=adefadmin,dc=adefcamps,dc=org" write by * read
حمّل الملف إلى قاعدة بيانات إل داب:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/file.bleh
لو واجهت خطأ كالآتي:
adding new entry "cn=module,cn=config" ldap_add: Other (e.g., implementation specific) error (80) additional info: <olcModuleLoad> handler exited with 1
فقم بإزالة المدخلة المذكورة cn=module,cn=config فالخطأ يشير أنها موجودة مسبقا
نقوم بعدها بتعريف النطاق الرئيسي:
# Create top-level object in domain dn: dc=example,dc=com objectClass: top objectClass: dcObject objectclass: organization o: Example Organization dc: Example description: LDAP Example # Admin user. dn: cn=admin,dc=example,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: secret
تستطيعون الآن البدء بإنشاء مدخلات إل داب، لفعل ذلك عليكم إختيار أداة مناسبة، هناك العشرات من المشاريع التي تسعى إلى ذلك، بعضها يفترض هيكلية معيّنة ل إل داب، أدوات اخرى تتطلب فهما وتمكنا من صيغ إل داب بينما تعاني اخرى من مشاكل أداء وثبات و/أو توطين، نقترح هنا إستخدام أداة lat المتوفرة للينكس على أمل إيجاد أداة متكاملة مستقبلا!
إدارة وإنشاء المدخلات في إل داب
قوموا بتثبيت lat بإستخدام:
sudo apt-get install lat
شغل lat وإختر connect من قائمة server، أدخل عنوان أي بي الخادم، ادخل المعطيات مثلا:
BaseDN: dc=adefcamps,dc=org Username: cn=admin,dc=adefcamps,dc=org
قوموا بعدها بإختيار Populate for samba
ستحتاجون لقيمة ل sid، للحصول عليها، على الخادم طبّقوا الأمر التالي:
sudo net getlocalsid
خادم إعداد الشبكة التلقائي (DHCP)
لإعداد خادم إعداد الشبكة التلقائي متكامل مع ldap على خادم dhcp طبّق الآتي:
apt-get install isc-dhcp-server-ldap
sudo sh -c "zcat /usr/share/doc/isc-dhcp-server-ldap/dhcp.schema.gz > /tmp/dhcp.schema" scp /tmp/dhcp.schema adefadmin@ldap-server-address:/etc/ldap/schema/dhcp.schema
في حال تم تثبيت الملف على خادم LDAP يمكن إستخدام الأمر :
sudo sh -c "zcat /usr/share/doc/isc-dhcp-server-ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema"
fix/edit the output file, then:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{0\}dhcp.ldif
أوامر مفيدة
لإستكشاف عناوين الأيبي الحالية بإستخدام avahi ووضعها في ملف /usr/local/etc/hosts.camp
for i in lab{1..3}-pc{1..12}.local ; do avahi-resolve -n -4 $i ; done | sed -e 's/\(.*\).local/\1 \1.adefcamps.org/' | awk '{print $3,$2,$1}' > /usr/local/etc/hosts.camp
لبناء قائمة بعناوين MAC ADDRESS من هذه القائمة:
cat /usr/local/etc/hosts.camp | cut -f1 -d\ | xargs -l ping -c 1
لإنشاء مدخلات LDAP ذات علاقة:
CONTAINER_DN="cn=labs,cn=DHCP Config,ou=Services,dc=adefcamps,dc=org" arp -n | awk '{print $1,$3}'| while read -d' ' a b ; do echo -e "dn: $(avahi-resolve -a $b|cut -f2|cut -f1 -d.),$CONTAINER_DN\ncn: name2\nobjectClass: top\nobjectClas: dhcpHost\ndhcpHWAddress: ethernet $a\ndhcpStatements:fixed-address $b\n\n" ; done
إعداد الإدارة المركزية للحزم بإستخدام puppetmaster
لتثبيت خادم puppet master قم بإستخدام الأمر:
sudo apt-get install puppetmaster
إعداد puppet على أجهزة المستخدمين (الزبون|client)
قم بتثبيت الحزمة puppet :
sudo apt-get install puppet
قم بتفعيل الخدمة بتعديل السطر في الملف /etc/default/puppet إلى:
SRART=yes
قم بإستيثاق الجهاز الزبون على الخادم (قم بتشغيل الأمر التالي على الخادم):
puppetca --sign clientname
for i in openshot pitivi audacity lmms mixxx ardour jack vocproc hydrogen gimp inkscape pencil stopmotion rosegarden blender soundconverter winff hydrogen ubuntu-restricted-extras vlc soundconverter synfigstudio fonts-arabeyes fonts-hosny-amiri fonts-hosni-thabit k3b ; do /bin/echo -e "package {\n '$i': \n ensure => installed \n}\n" ; done >> /etc/puppet/manifests/site.pp
دفع التغيرات إلى الأجهزة الزبون إختيارا
لفعل ذلك نحتاج إلى إستخدام الأمر puppet kick على الخادم، ولكن قبل ذلك، يجب تعديل إعدادات puppet على الزبون ليقوم بالتنصت لأوامر الخادم وذلك يحتاج إلى إضافة تصريح
معلومات ذات علاقة
إعداد خادم سامبا المتكامل مع إل داب
بعد إعداد خادم إل داب بالشكل الموصوف أعلاه، قم على خادم سامبا بتثبيت الآتي:
sudo apt-get install samba samba-doc smbldap-tools
تأكد أن إسم خادم ال داب مضاف إلى /etc/hosts أو يمكن قراءته من خادم الأسماء، ثم في ملف /etc/samba/smb.conf إبحث عن :
passdb backend = tdbsam
قم بتعليقها، وإضف الآتي:
# passdb backend = tdbsam # LDAP Settings passdb backend = ldapsam:ldap://hostname ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=adefadmin,dc=adefcamps,dc=org ldap ssl = start tls# ldap ssl = off# ldap passwd sync = yes ... add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
الخطوات: https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-samba-configuration
إعداد خادم NFS
التجهيز التقني#المجلدات المشتركة
إعداد automount على الجهاز الزبون
# sudo apt-get install autofs sudo apt-get install autofs libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind
echo "/adefcamps /etc/auto.adefcamps --ghost" | sudo tee -a /etc/auto.master
echo "SAN -fstype=nfs 10.0.0.16:/export/SAN" | sudo tee -a /etc/auto.adefcamps
sudo mkdir /adefcamps
sudo /etc/init.d/autofs restart
- ملاحظة : ليعمل نظام السموحات بشكل جيد، يجب أن يكون كلا من الخادم والجهاز الزبون مطلعين على ذات المجموعة من المستخدمين ومجموعاتهم (عبر إستخدام إل داب)
kvm
apt-get install qemu-kvm libvirt-bin
network bridge
sudo apt-get install bridge-utils
auto br0 iface br0 inet static address 192.168.50.1 network 192.168.50.0 netmask 255.255.255.0 broadcast 192.168.50.255 bridge_ports eth1 bridge_stp off bridge_fd 0 bridge_maxwait 0
خادم الإقلاع من الشبكة
للإقلاع من الشبكة، نحتاج إلى تحضير ملف يستطيع الجهاز الزبون فهمه، وهو عادة ما يستلزم بروتوكول PXE أو صيغة efi
لعمل ذلك تتبعنا الخطوات هنا.
بعد ذلك، علينا اعداد خادوم DHCP ليقوم بإرسال تعليمات باسم الملف وعنوان الخادوم اللذين يستطيع عبرهما تنزيل وتشغيل برنامج تثبيت نظام التشغيل.
هذا الإعداد يكون عادة بشكل يعكس الآتي:
next-server 10.0.0.10 filename "grubnetx64.efi.signed"
حيث next-server هو عنوان خادوم tftp (في الأغلب هو ذات الخادوم الذي نصفه "بخادوم الإقلاع من الشبكة") والملف هو ملف أنتجناه في الخطوة السابقة ويقدّمه خادوم tftp المذكور.
وفي حالة خادوم المعسكرات هذا الإعداد موجود في خادوم LDAP:
dn: cn=labs,cn=DHCP Config,ou=Services,dc=adefcamps,dc=org