خادوم المعسكرات المتقدم

من ويكي أضِف
اذهب إلى التنقل اذهب إلى البحث

هذه الوصفة تسعى لإنشاء خادوم يقدم إستيثاق مركزي بإستخدام 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 على الزبون ليقوم بالتنصت لأوامر الخادم وذلك يحتاج إلى إضافة تصريح

قالب:TODO

معلومات ذات علاقة

إعداد خادم سامبا المتكامل مع إل داب

بعد إعداد خادم إل داب بالشكل الموصوف أعلاه، قم على خادم سامبا بتثبيت الآتي:

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