সঠিকভাবে হোস্টের নামটি সেট করা - আমাজন ইসি 2 তে ফেডোরা 20


11

প্রসঙ্গ

আমার একটি ফেডোরা 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 অন্তর্ভুক্ত

কি?

উত্তর:


11

আপনার দুটি জিনিস করতে হবে (তবে কেবলমাত্র সেগুলির মধ্যে একটি কাজ করেছেন):

  1. এতে হোস্টনামটি সেট করুন /etc/hostname
  2. সম্পাদনা করুন /etc/cloud/cloud.cfgএবং সেট preserve_hostnameকরুন True। (আপনি নিজের ব্যবহারকারী ডেটা সহ এই বিকল্পটিও পাস করতে পারেন can)

দ্বিতীয় ধাপটি প্রয়োজনীয় কারণ ফেডোরা cloud-initউদাহরণস্বরূপ ব্যবস্থা করার জন্য ইসি 2 পরিবেশ থেকে ব্যবহারকারী ডেটা আনার জন্য ব্যবহার করে এবং cloud-initহোস্টনামটি অবিচল থাকতে হবে তা জানাতে হবে।


ঠিক আছে. আমি তা সঙ্গে সঙ্গে চেষ্টা করব।
ডেভিড টনহোফার

1
ধর, এ কি? ঠিক আছে, ওয়াইএএমএল ( en.wikedia.org/wiki/YAML )। সুতরাং স্কেলহোরাইজন্টলি ডটকম / ২০১৩ / ২২ / ২৪ / মৈত্রীকরণ- থেকে- ক্লাউড- ইনিট অনুসারে আমি শীর্ষ স্তরে " সংরক্ষণ_পৃষ্ঠা : সত্য" যুক্ত করছি। হ্যাঁ এটি কাজ করে।
ডেভিড টনহোফার

হ্যাঁ, এটি কেবল পুরানো ওয়াইএএমএল।
মাইকেল হ্যাম্পটন

সমস্ত ট্রায়াল এবং ত্রুটি। ওহ ভাল, আমি অনেক কিছু শিখেছি। ধন্যবাদ।
ডেভিড টনহোফার

ধন্যবাদ, এটি CentOS 7.3 এ কাজ করে - দ্বিতীয় ধাপ ছাড়াই, হোস্টনামটি পুনরায় বুটে ক্লাউড-ইন দ্বারা ওভাররাইট করা হয়। প্রথম পদক্ষেপের জন্য, আমি ব্যবহার করেছি sudo hostnamectl set-hostname --static myhost.example.com, যা /etc/hostnameপাশাপাশি লিখেছে ।
রিচভেল

2

আর একটি বিকল্প হ'ল নাম ব্যবহারকারীর ডেটা দিয়ে সেট করা

যেমন

#cloud-config
hostname: foo
fqdn: foo.bar.net

এটি বুটটিতে হোস্টনামটি সেট করবে, তবে আমি নিশ্চিত না যে এটি প্রথম লগইনের আগে সর্বদা ঘটবে কিনা I'm


1

দেখে মনে হচ্ছে উত্তরটি হোস্টনামেক্টল ম্যান পৃষ্ঠাতে এখন 3 টি হোস্টনাম, স্থির, ক্ষণস্থায়ী এবং সুন্দর হোস্টনাম রয়েছে।

স্থির হোস্টনামটি সেট করতে যা আমার কাছে মনে হয় আপনি যা চান,

hostnamectl --static set-hostname somehost.tld

আপনি সেগুলি একই সাথে সেট করতে পারেন

hostnamectl set-hostname somehost.tld

সঠিক, তবে ... আমি বুঝতে পারি যে আমার ইউনিট ফাইলটি কী করে তা পরিষ্কার করে দেওয়া উচিত ছিল; এটি "হোস্টনামেক্টল" ব্যবহার করে স্থির এবং অস্থায়ী হোস্টনামগুলি অন্যদের মধ্যে সেট করে; এটি কাজ করে তবে আমি কী অর্জন করতে চাই তার "বিশাল কনফিগারেশন" বলে মনে হচ্ছে। পাঠ্য ঠিক করা হচ্ছে ...
ডেভিড টোনহোফার

@ ডেভিডটনহোফার: আমি বিভ্রান্ত আপনার প্রশ্নে শব্দ হারিয়ে গেছে তবে আমি কীভাবে আমার F20 সিস্টেমে হোস্টনামটি সেট করব সে সম্পর্কে এটি ফুটে উঠেছে। সম্ভবত আপনি যদি সমস্ত
ভার্চিয়াটি সরিয়ে ফেলেছেন

হুমমম ... তোমার একটা কথা হতে পারে ঠিক আছে, আমি জানি হোস্ট-নেম কীভাবে সেট করতে হয়। তবে বুট করার সময় আমি কীভাবে এটি সঠিকভাবে একটি অ্যামাজন ইসি 2 ইমেজে সেট করব?
ডেভিড টনহোফার

1

একটি অতিরিক্ত ইউনিট ফাইল ব্যবহার করে সমাধান করুন

নিম্নলিখিতগুলি সত্যই কাজ করে না:

/usr/lib/systemd/system/penpen-naming.serviceশুরুর পরে একটি সিস্টেম ইউনিট ফাইল তৈরি করুন systemd-hostnamed.service(এবং সম্ভবত কেবল পরে dbus.service)।

("সঠিক জায়গা" সন্ধানের জন্য আমাকে কয়েকটা ট্রায়াল চালাতে হয়েছিল যাতে systemdনতুন ইউনিটটি সহজভাবে নিষ্ক্রিয় না হয় কারণ "একটি চক্র সনাক্ত করা হয়েছিল"। নোট করুন যে আপনি ইউনিট ফাইল নির্ভরতা গ্রাফটি গ্রাফ করতে পারেন systemd-analyze dotযা একটি "ডট তৈরি করে" "ফাইল" গ্রাফভিজ " dotপ্রোগ্রামে পাস করতে হবে , তবে ফলাফলটি কেবলমাত্র একটি বিভ্রান্তিকর গ্রাফ, যদি আপনি এটি পূর্বনির্ধারিত না করেন)

ইউনিট ফাইলের বিষয়বস্তু /usr/lib/systemd/system/penpen-naming.service:

[Unit]
Description= *** Hostname becomes 'penpen.homelinux.org' ***
After=default.target 
# After=systemd-hostnamed.service -- NOPE 
# After=dbus.service  -- NOPE

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/toolbox/setting_hostnames/penpen

[Install]
WantedBy=multi-user.target

এটি ব্যবহার করে সক্রিয় করুন systemctl enable penpen-naming

কি করে /usr/local/toolbox/setting_hostnames/penpen? লিখেছেন এমন penpen.homelinux.org করতে /etc/hostname। তবে এটি আসলে পর্যাপ্ত নয়, একটিকে হোস্টনামটি ব্যবহার করে সেট করতে হবে hostnamectl

তারপরেও ইউনিটটি এত দেরিতে চালাতে হবে (After=default.target)যে লগইন শেলটি এখনও ইসি 2 অভ্যন্তরীণ হোস্টনামটি প্রদর্শন করে। এবং ডিবিবাসের সাথে সংযোগ স্থাপনে এখনও সমস্যা রয়েছে।

সুতরাং এটি একটি ভাল সমাধান নয়, বা কমপক্ষে "ইউনিট ফাইল নির্ভরতা গাছের অবস্থানে" এবং "ডিবিএসের সাথে কী হচ্ছে" এর জন্য একটি সমাধানের দরকার আছে

এর পরে হোস্টের নামগুলি হ'ল:

Kernel hostname via 'sysctl'                      : penpen.homelinux.org
Kernel domainname via 'sysctl'                    : (none)
File '/etc/hostname'                              : contains 'penpen.homelinux.org'
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'              : penpen.homelinux.org
Hostname ('hostname')                             : penpen.homelinux.org
Short hostname ('hostname --short')               : penpen
NIS domain name ('domainname')                    : (none)
YP default domain ('hostname --yp')               : [hostname --yp failed]
DNS domain name ('hostname --domain')             : homelinux.org
Fully qualified hostname ('hostname --fqdn')      : penpen.homelinux.org
Hostname alias ('hostname --alias')               : 
By IP address ('hostname --ip-address')           : 54.221.0.63
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'                 : penpen.homelinux.org
Transient hostname via 'hostnamectl'              : penpen.homelinux.org
Pretty hostname via 'hostnamectl'                 : 

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.