DMM.com Adventskalender 2019 Dies ist der Artikel am 17. Tag.
Mein Name ist @sinnershiki und ich bin verantwortlich für die Infrastruktur für die Verbreitung von DMM-Videos.
Der letztjährige DMM.com-Adventskalender hat StackStorm Introductory Story veröffentlicht, aber dieses Jahr möchte ich Ihnen CentOS 8 vorstellen, das im September veröffentlicht wurde. Ich werde.
Unterschiede zwischen CentOS 8 und CentOS 7, achten Sie auf Yum und Middleware
Wie oben vorgestellt, sind die folgenden drei für Middleware-ähnliche Änderungen bekannt.
Da der Unterschied bei der tatsächlichen Verwendung jedoch nicht allein dadurch bekannt ist, möchte ich ihn anhand der Betriebssysteminstallation ausprobieren.
Außerdem möchte ich ein wenig über die Änderung der Standardeinstellung von Python erwähnen, die mir persönlich von 2 Serien zu 3 Serien wichtig ist.
Dieses Mal möchte ich in verschiedenen Umgebungen spielen, also möchte ich zunächst das Betriebssystem auf einen geeigneten Server stellen und auch mit dem Bento / Centos-8-Image von Vagrant spielen.
Ein geeigneter Server, der übrig blieb
vagrant
https://app.vagrantup.com/bento/boxes/centos-8
Vagrant.configure("2") do |config|
config.vm.box = "bento/centos-8"
end
Ich habe versucht, das Betriebssystem auf einem geeigneten Server zu installieren. Es war in Ordnung, VM separat zu verwenden, aber es gab einen Überschuss.
Es gab keine wesentlichen Änderungen und die Auswahl des Softwareinstallationsteils hat sich so stark geändert? Es ging um.
Die automatische Generierung der Festplattenzuweisung hat sich nicht wesentlich geändert
Übrigens, da sich die Auswahlelemente der Software drastisch geändert haben, weiß ich nicht, wo sich das Netzwerkskript befindet, und als ich es ohne Überprüfung einfügte, wurde der Server ohne das Netzwerkskript gestartet.
Ich frage mich, ob ich Network Manager ernsthaft richtig betreiben muss.
% systemctl status network
Unit network.service could not be found.
dnf
Von hier an möchte ich grundsätzlich in die vagabundierende Umgebung gehen.
Als Alternative zu yum läuft yum auf Python2, während dnf auf Python3 läuft. Der Befehl yum kann jedoch weiterhin verwendet werden. Weil es ein Alias für dnf zu sein scheint. Ich hatte also das Gefühl, dass sich die Nutzung im Vergleich zu Yum für den normalen Gebrauch nicht wesentlich verändert hat.
Das Folgende ist der Befehl, wenn tmux mit dnf als Testversion eingefügt wird.
[root@vm01 ~]# which dnf
/usr/bin/dnf
[root@vm01 ~]# which yum
/usr/bin/yum
[root@vm01 ~]# ls -la /usr/bin/yum
lrwxrwxrwx. 1 root root 5 May 13 2019 /usr/bin/yum -> dnf-3
[root@vm01 ~]# dnf search tmux
Last metadata expiration check: 0:00:22 ago on Sun 15 Dec 2019 01:35:52 PM UTC.
============================ Name Exactly Matched: tmux =============================
tmux.x86_64 : A terminal multiplexer
tmux.i686 : A terminal multiplexer
tmux.x86_64 : A terminal multiplexer
[root@vm01 ~]# dnf install -y tmux
Datadog, Inc. 23 kB/s | 2.5 kB 00:00
CentOS-8 - AppStream 1.4 MB/s | 6.3 MB 00:04
CentOS-8 - Base 1.7 MB/s | 7.9 MB 00:04
CentOS-8 - Extras 791 B/s | 2.1 kB 00:02
Dependencies resolved.
=====================================================================================
Package Arch Version Repository Size
=====================================================================================
Installing:
tmux x86_64 2.7-1.el8 BaseOS 317 k
Transaction Summary
=====================================================================================
Install 1 Package
Total download size: 317 k
Installed size: 781 k
Downloading Packages:
tmux-2.7-1.el8.x86_64.rpm 285 kB/s | 317 kB 00:01
-------------------------------------------------------------------------------------
Total 119 kB/s | 317 kB 00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : tmux-2.7-1.el8.x86_64 1/1
Running scriptlet: tmux-2.7-1.el8.x86_64 1/1
Verifying : tmux-2.7-1.el8.x86_64 1/1
Installed:
tmux-2.7-1.el8.x86_64
Complete!
[root@vm01 ~]# dnf list --installed | grep tmux
tmux.x86_64 2.7-1.el8 @BaseOS
Grundsätzlich scheint es "/etc/yum.repo.d / *. Repo" zu lesen. Auch hier gibt es keinen Unterschied zu yum. Es wurde gesagt, dass es gelesen werden würde, selbst wenn es in "/ etc / dnf / dnf.conf" beschrieben würde. Die Repository-Einstellung wird normalerweise in yum.repo.d vorgenommen, und die Priorität ist auch in yum.repo.d höher, sodass die Behandlung von Repo-Dateien mit yum identisch ist. Was wird passieren, nachdem dnf dies durchdrungen hat?
Im Folgenden wird das CentOS-Epel-Repository hinzugefügt. Wenn Sie epel-release installieren, wird es wie üblich enthalten sein, sodass es sich auch dann nicht ändert, wenn es zu dnf wird.
[root@vm01 ~]# dnf install epel-release
Last metadata expiration check: 0:12:21 ago on Sun 15 Dec 2019 01:35:52 PM UTC.
Dependencies resolved.
=====================================================================================
Package Arch Version Repository Size
=====================================================================================
Installing:
epel-release noarch 8-5.el8 extras 22 k
Transaction Summary
=====================================================================================
Install 1 Package
Total download size: 22 k
Installed size: 30 k
Is this ok [y/N]: y
Downloading Packages:
epel-release-8-5.el8.noarch.rpm 21 kB/s | 22 kB 00:01
-------------------------------------------------------------------------------------
Total 9.5 kB/s | 22 kB 00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : epel-release-8-5.el8.noarch 1/1
Running scriptlet: epel-release-8-5.el8.noarch 1/1
Verifying : epel-release-8-5.el8.noarch 1/1
Installed:
epel-release-8-5.el8.noarch
Complete!
[root@vm01 ~]# ls -la /etc/yum.repos.d/epel.repo
-rw-r--r--. 1 root root 1206 Aug 6 18:17 /etc/yum.repos.d/epel.repo
[root@vm01 ~]# cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/SRPMS
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
gpgcheck=1
iptables
Wie eingangs erwähnt, wurde iptables durch nftables ersetzt. Die Rückseite von firewalld hat sich ebenfalls von iptables zu nftables geändert, aber es schien keine besonderen Probleme beim Betrieb von firewalld zu geben.
Darüber hinaus ist iptables nicht vollständig unbrauchbar. Es scheint, dass es nach der Installation verwendet werden kann.
Wenn Sie den Vorgang also nicht sofort ändern möchten, können Sie Ihr Leben verlängern. Ich frage mich, ob es gut ist oder nicht ...
[root@vm01 ~]# dnf install -y iptables-services
Last metadata expiration check: 1:20:15 ago on Mon 16 Dec 2019 01:11:06 AM UTC.
Dependencies resolved.
=====================================================================================
Package Arch Version Repository Size
=====================================================================================
Installing:
iptables-services x86_64 1.8.2-9.el8_0.1 BaseOS 58 k
Transaction Summary
=====================================================================================
Install 1 Package
Total download size: 58 k
Installed size: 20 k
Downloading Packages:
iptables-services-1.8.2-9.el8_0.1.x86_64.rpm 691 kB/s | 58 kB 00:00
-------------------------------------------------------------------------------------
Total 42 kB/s | 58 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : iptables-services-1.8.2-9.el8_0.1.x86_64 1/1
Running scriptlet: iptables-services-1.8.2-9.el8_0.1.x86_64 1/1
Verifying : iptables-services-1.8.2-9.el8_0.1.x86_64 1/1
Installed:
iptables-services-1.8.2-9.el8_0.1.x86_64
Complete!
[root@vm01 ~]# systemctl stop firewalld nftables
[root@vm01 ~]# systemctl disable firewalld nftables
[root@vm01 ~]# systemctl enable iptables
Created symlink /etc/systemd/system/basic.target.wants/iptables.service → /usr/lib/systemd/system/iptables.service.
[root@vm01 ~]# systemctl start iptables
[root@vm01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
python
Bisher lief auf CentOS yum auf Python, sodass Python standardmäßig enthalten war und Python-Befehle verwendet werden konnten.
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# python -V
Python 2.7.5
In CentOS8 befindet sich der Python-Befehl jedoch standardmäßig nicht im Pfad. Da es in dnf verwendet werden sollte, existiert es, also lasst uns den Ort erkunden.
[root@vm01 ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
[root@vm01 ~]# python -V
-bash: python: command not found
[root@vm01 ~]# head /usr/bin/dnf
#!/usr/libexec/platform-python
# The dnf executable script.
#
# Copyright (C) 2012-2016 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# the GNU General Public License v.2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY expressed or implied, including the implied warranties of
[root@vm01 ~]# ls -la /usr/libexec/platform-python
lrwxrwxrwx. 1 root root 20 Oct 7 18:00 /usr/libexec/platform-python -> ./platform-python3.6
[root@vm01 ~]# /usr/libexec/platform-python -V
Python 3.6.8
Nun, ich fand heraus, dass Python in / usr / libexec / platform-python
so ist. Tatsächlich ist einige Software betroffen und bis zu 2.7 Ansible-Serien funktionieren aufgrund dieses Einflusses standardmäßig nicht.
Ab ansible 2.8.0 ist die Standardpython wie in [ChangeLog] gezeigt (https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst#v280). Wenn nicht, scheint es eine Spezifikation zu geben, nach diesem Ort zu suchen.
% ansible -i inventory all -m ping
vm01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
Wenn Sie ansible 2.7 series oder niedriger für CentOS8 ausführen möchten, geben Sie den Parameter [ansible_python_interpreter] an (https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#connection-variables). ist.
% ansible --version
ansible 2.7.10
ansible python module location = /opt/rh/python27/root/usr/lib/python2.7/site-packages/ansible
executable location = /opt/rh/python27/root/usr/bin/ansible
python version = 2.7.13 (default, Apr 12 2017, 06:53:51) [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]
% ansible -i inventory all -m shell -a "cat /etc/redhat-release" -kK
SSH password:
SUDO password[defaults to SSH password]:
server | FAILED! => {
"changed": false,
"module_stderr": "Shared connection to xxx.xxx.xxx.xxx closed.\r\n",
"module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n",
"msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error",
"rc": 127
}
% ansible -i inventory all -m shell -a "cat /etc/redhat-release" -kK --extra-vars='ansible_python_interpreter=/usr/libexec/platform-python'
SSH password:
SUDO password[defaults to SSH password]:
server | CHANGED | rc=0 >>
CentOS Linux release 8.0.1905 (Core)
Eigentlich wollte ich so etwas wie das Problem beseitigen, dass Datadog nicht funktionierte, als ich es zum Zeitpunkt der Veröffentlichung überprüfte oder nach der Ursache suchte, aber wie erwartet wurde es zwei Monate nach der Veröffentlichung fest behandelt.
Ich denke also, dass die Umgebung derzeit ziemlich nutzbar geworden ist, daher denke ich, dass es Zeit ist, CentOS 8 ernsthaft einzusetzen.
CentOS7 kann weiterhin verwendet werden, aber die EOL [^ EOL] von CentOS6 nähert sich und ich möchte ein neues Betriebssystem verwenden. [^ EOL]: EOL von CentOS 6 ist der 30. November 2020
Recommended Posts