প্রসঙ্গ
আমার একটি ফেডোরা 20 ক্লাউড চিত্র রয়েছে যা আমাজন ইসি 2 তে চলছে (এরপরে "উদাহরণ" বলা হয়)। অবিচ্ছিন্নভাবে এর হোস্টনাম সেট করা সম্পর্কে আমার কিছুটা অনিশ্চয়তা রয়েছে।
লক্ষ্য
এই ক্ষেত্রে, আসুন আমি বলি যে আমি উদাহরণটির হোস্টনামটি পেনপেন.হোমেলিনিক্স . org এ সেট করতে চাই । (এই নামটি ব্যবহার করে DynDNS এ নিবন্ধভুক্ত হবে ddclient
, তবে এটি অন্য দিক যা আমরা এখানে আগ্রহী নই))
বুট সম্পূর্ণ হওয়ার পরে ( hostnamectl
অন্যদের মধ্যে ব্যবহার করে) হোস্টনাম অবশ্যই ম্যানুয়ালি সেট করা যেতে পারে । তবে আমরা প্রথম লগইনের আগে সঠিক হোস্টনাম সেট করতে চাই।
Ditionতিহ্যগতভাবে, অবিচ্ছিন্নভাবে হোস্টনামটি কনফিগার করার জন্য, এর লিখিত সামগ্রীগুলি পরিবর্তন করা হবে /etc/hostname
। দুর্ভাগ্যক্রমে এটি এখানে কাজ করে না।
ডিফল্ট সিস্টেমের আচরণ
ডিফল্টরূপে, দৃষ্টান্তটি তার হোস্টনামটি অভ্যন্তরীণ ইসি 2 নামে সেট করে। বুট করার পরে, আমরা সমস্ত ছোট্ট বিভিন্ন জায়গার দিকে নজর রাখতে পারি যা হোস্টনামটি দেয় এবং আমরা দেখতে পাই:
Kernel hostname via 'sysctl' : ip-10-164-65-105.ec2.internal
Kernel domainname via 'sysctl' : (none)
File '/etc/hostname' : contains 'ip-10-164-65-105.ec2.internal'
File '/etc/sysconfig/network' : exists but has no 'HOSTNAME' line
According to the shell : HOSTNAME = ip-10-164-65-105.ec2.internal
Nodename given by 'uname --nodename' : ip-10-164-65-105.ec2.internal
Hostname ('hostname') : ip-10-164-65-105.ec2.internal
Short hostname ('hostname --short') : ip-10-164-65-105
NIS domain name ('domainname') : (none)
YP default domain ('hostname --yp') : [hostname --yp failed]
DNS domain name ('hostname --domain') : ec2.internal
Fully qualified hostname ('hostname --fqdn') : ip-10-164-65-105.ec2.internal
Hostname alias ('hostname --alias') :
By IP address ('hostname --ip-address') : 10.164.65.105
All IPs ('hostname --all-ip-addresses') : 10.164.65.105
All FQHNs via IPs ('hostname --all-ip-addresses') : ip-10-164-65-105.ec2.internal
Static hostname via 'hostnamectl' : ip-10-164-65-105.ec2.internal
Transient hostname via 'hostnamectl' : ip-10-164-65-105.ec2.internal
Pretty hostname via 'hostnamectl' :
সুতরাং আসুন / ইত্যাদি / হোস্টনামে লেখার চেষ্টা করি ...
যদি কেউ কাঙ্ক্ষিত হোস্টনামটি লিখেন /etc/hostname
তবে পরবর্তী বুটে এই পরিবর্তনটি আবার হারিয়ে যাবে। আসুন বুট প্রক্রিয়াটি যাচাই করে দেখি systemd
।
উদাহরণ রান
লিখন rorororoor.homelinux.org
থেকে /etc/hostname
, তারপর পুনরায় বুট করুন।
জার্নালড ব্যবহার করে আমরা খুঁজে পাই (নোট করুন লগ লাইনগুলি পুরোপুরি সময় অনুসারে অর্ডার করা হয় না):
স্থানীয় হোস্ট হিসাবে বুট প্রক্রিয়াটি হোস্টনাম দিয়ে শুরু হয় তারপরে রুটটি স্যুইচ করে, এই মুহুর্তে হোস্টনামটি rorororoor.homelinux.org হয়ে যায় ।
Dec 26 15:12:08 localhost systemd[1]: Starting Cleanup udevd DB...
Dec 26 15:12:08 localhost systemd[1]: Started Cleanup udevd DB.
Dec 26 15:12:08 localhost systemd[1]: Starting Switch Root.
Dec 26 15:12:08 localhost systemd[1]: Reached target Switch Root.
Dec 26 15:12:08 localhost systemd[1]: Starting Switch Root...
Dec 26 15:12:08 localhost systemd[1]: Switching root.
Dec 26 15:12:08 localhost systemd-journal[67]: Journal stopped
Dec 26 15:12:12 rorororoor.homelinux.org systemd-journal[155]: Runtime journal is using 8.0M
Dec 26 15:12:12 rorororoor.homelinux.org systemd-journal[155]: Runtime journal is using 8.0M
Dec 26 15:12:12 rorororoor.homelinux.org systemd-journald[67]: Received SIGTERM
...........
Dec 26 15:12:12 rorororoor.homelinux.org kernel: SELinux: initialized
Dec 26 15:12:12 rorororoor.homelinux.org systemd-journal[155]: Journal started
Dec 26 15:12:08 rorororoor.homelinux.org systemd-cgroups-agent[128]: Failed to get D-Bus connection: Failed to connect to socket /run/systemd/private: No such file or directory
Dec 26 15:12:10 rorororoor.homelinux.org systemd[1]: systemd 208 running in system mode.
Dec 26 15:12:10 rorororoor.homelinux.org systemd[1]: Detected virtualization 'xen'.
Dec 26 15:12:10 rorororoor.homelinux.org systemd[1]: Set hostname to <rorororoor.homelinux.org>.
Dec 26 15:12:10 rorororoor.homelinux.org systemd[1]: Failed to open private bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Dec 26 15:12:11 rorororoor.homelinux.org systemd[1]: Mounted Debug File System.
আমরা দেখতে পেলাম যে লগের হোস্ট কলাম পরিবর্তন হিসাবে সাফল্যের systemd
সাথে সফলতার সাথে rorororoor.homelinux.org এ হোস্টনামটি সেট করে । কিছু ত্রুটি জারি করা হয়, সম্ভবত কারণ hostnamectl
এই সময়ে DBus সাথে যোগাযোগ করতে পারে না।
কে এখানে নেমসেটিং করে তা আমি নিশ্চিত নই; সিস্টেমডের কিছু অভ্যন্তরীণ অংশ? যাইহোক, জার্নালটির মাধ্যমে অব্যাহত রেখে আমরা দেখতে পেয়েছি যে হোস্টনামটি খুব শীঘ্রই ইসি 2 অভ্যন্তরীণ নামটিতে ফিরে এসেছে:
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] util.py[DEBUG]: Running command ('resize2fs', '/dev/xvda1') with allowed return codes [0] (shell=False, capture=True)
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] cc_resizefs.py[DEBUG]: Resizing took 0.067 seconds
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] cc_resizefs.py[DEBUG]: Resized root filesystem (type=ext4, val=True)
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] helpers.py[DEBUG]: config-set_hostname already ran (freq=once-per-instance)
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] helpers.py[DEBUG]: Running config-update_hostname using lock (<cloudinit.helpers.DummyLock object at 0x2559210>)
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] cc_update_hostname.py[DEBUG]: Updating hostname to ip-10-164-65-105.ec2.internal (ip-10-164-65-105)
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] util.py[DEBUG]: Running command ['hostname'] with allowed return codes [0] (shell=False, capture=True)
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] __init__.py[DEBUG]: Attempting to update hostname to ip-10-164-65-105.ec2.internal in 1 files
Dec 26 15:12:33 rorororoor.homelinux.org cloud-init[485]: [CLOUDINIT] util.py[DEBUG]: Running command ['hostnamectl', 'set-hostname', 'ip-10-164-65-105.ec2.internal'] with allowed return codes [0] (shell=False, capture=True)
Dec 26 15:12:33 rorororoor.homelinux.org dbus-daemon[226]: dbus[226]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service'
Dec 26 15:12:33 rorororoor.homelinux.org dbus[226]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service'
Dec 26 15:12:34 rorororoor.homelinux.org systemd[1]: Starting Hostname Service...
Dec 26 15:12:34 rorororoor.homelinux.org dbus-daemon[226]: dbus[226]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 26 15:12:34 rorororoor.homelinux.org dbus[226]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 26 15:12:34 rorororoor.homelinux.org systemd[1]: Started Hostname Service.
Dec 26 15:12:34 rorororoor.homelinux.org systemd-hostnamed[598]: Changed static host name to 'ip-10-164-65-105.ec2.internal'
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal systemd-hostnamed[598]: Changed host name to 'ip-10-164-65-105.ec2.internal'
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal systemd[1]: Started Initial cloud-init job (metadata service crawler).
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal systemd[1]: Starting Cloud-config availability.
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal systemd[1]: Reached target Cloud-config availability.
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal systemd[1]: Starting Apply the settings specified in cloud-config...
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal [485]: [CLOUDINIT] helpers.py[DEBUG]: Running config-update_etc_hosts using lock (<cloudinit.helpers.DummyLock object at 0x2559350>)
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal [485]: [CLOUDINIT] cc_update_etc_hosts.py[DEBUG]: Configuration option 'manage_etc_hosts' is not set, not managing /etc/hosts in module update_etc_hosts
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal [485]: [CLOUDINIT] helpers.py[DEBUG]: config-rsyslog already ran (freq=once-per-instance)
Dec 26 15:12:34 ip-10-164-65-105.ec2.internal [485]: [CLOUDINIT] helpers.py[DEBUG]: config-users-groups already ran (freq=once-per-instance)
এখানে হোস্ট-নেম সেটিংটি "সিস্টেমড-হোস্টনাম" ইউনিটের মাধ্যমে সম্পন্ন হয়। "সিস্টেমড-হোস্টনাম" এর জন্য "ইউনিট ফাইল" /usr/lib/systemd/system/systemd-hostnamed.service
রয়েছে এবং এতে রয়েছে:
[Unit]
Description=Hostname Service
Documentation=man:systemd-hostnamed.service(8) man:hostname(5) man:machine-info(5)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/hostnamed
[Service]
ExecStart=/usr/lib/systemd/systemd-hostnamed
BusName=org.freedesktop.hostname1
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_SYS_PTRACE
উপরে বর্ণিত প্রোগ্রামটি /usr/lib/systemd/systemd-hostnamed
আসলে একটি বাইনারি (WHY!)। তবে সোর্স কোড পাওয়া যাবে।
মুল বক্তব্যটি হ'ল আমরা আইপি -10-164-65-105.ec2.in অন্তর্ভুক্ত
কি?