GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Installieren und konfigurieren Sie Puppet unter CentOS 7 / RHEL 7

Dieses Tutorial ist für eine alte Version von Puppet Master, einige Links sind defekt und funktionieren möglicherweise nicht wie erwartet. Eine neue Version ist hier verfügbar:How to Install Puppet 4.x On CentOS 7 / RHEL 7.

Puppet ist ein kostenloses und quelloffenes Konfigurationsmanagement-Tool, das Ihnen hilft, die Konfigurationen von Hunderten von Client-Systemen zentral bereitzustellen und zu verwalten. Es ist für GNU/Linux-, Mac-, BSD-, Solaris- und Windows-basierte Computersysteme verfügbar, veröffentlicht unter Apache-Lizenz, geschrieben in „Ruby“-Sprache. Diese Anleitung hilft Ihnen bei der Installation von Puppet unter CentOS 7 / RHEL 7.

Marionettenarchitektur:

Agent / Master:

In dieser Architektur führen ein oder mehrere Server die Puppet-Master-Anwendung aus, normalerweise als Rack-Anwendung, die von einem Webserver verwaltet wird (wie Apache mit Passenger), und die Puppet-Agent-Anwendung wird auf Client-Servern ausgeführt, normalerweise als Hintergrunddienst.

In regelmäßigen Abständen sendet der Puppet Agent Fakten an den Puppet Master und fordert einen Katalog an. Der Master kompiliert den Katalog dieses Knotens und gibt ihn zurück, wobei er mehrere Informationsquellen verwendet, auf die er Zugriff hat.

Die eigenständige Architektur:

In dieser Architektur führen Client-Server die Puppet Apply-Anwendung (eigenständige Kombination der Puppet Master- und Puppet Agent-Anwendungen) aus, normalerweise als geplante Aufgabe oder Cron-Job.

Umgebung:

Hier zeige ich Ihnen, wie Sie eine Marionette in der Master-/Agent-Architektur konfigurieren. In diesem Tutorial werde ich zwei CentOS 7-Systeme verwenden, wie unten erwähnt.

Puppenmeister:

Operating system : CentOS 7 Minimal
IP Address       : 192.168.12.10
HostName         : server.itzgeek.local

Puppet-Client:

Operating System : CentOS 7 Minimal
IP Address       : 192.168.12.20
HostName         : client.itzgeek.local

Voraussetzungen:

Konfigurieren Sie das EPEL-Repository auf CentOS 7 / RHEL 7.

Stellen Sie sicher, dass Ihr System (sowohl der Puppet-Server als auch der Client) in der Lage sind, den Hostnamen gegenseitig aufzulösen, indem Sie entweder die /etc/hosts-Datei verwenden oder DNS-Server .

Um ein produktionsreifes Puppet-Setup zu haben, müssen wir Apache mit Passenger verwenden. Um den Passagier zu erhalten, laden Sie die Repo-Datei herunter und platzieren Sie sie in /etc/yum.repos.d/

Hinweis:Nur auf dem Masterserver.

[root@server ~]# curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo

Um den Puppet-Master/Agent zu installieren, müssten wir das Puppet-Repository auf allen Knoten einrichten. Aktivieren Sie das Puppet Labs-Repository, indem Sie es unter RPM installieren.

Hinweis:Führen Sie es sowohl auf Master- als auch auf Agent-Knoten aus.

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

Installieren und konfigurieren Sie Puppet unter CentOS 7:

Jetzt ist es an der Zeit, Puppet zu installieren. Installieren Sie den Puppet-Server mit dem folgenden Befehl.

[root@server ~]# yum -y install puppet-server

Wie bereits erwähnt, werden wir Puppet für die Master/Agent-Architektur konfigurieren. Dieser Knoten fungiert also als Master-Knoten. Bearbeiten Sie die Puppet-Konfigurationsdatei und ändern Sie die dns_alt_names .

[root@server ~]# vi /etc/puppet/puppet.conf

[main]
dns_alt_names = server,server.itzgeek.local
certname = server.itzgeek.local

Wenn dieser Computer der einzige Puppet-Master in Ihrer Umgebung ist, führen Sie den folgenden Befehl aus, um das Puppet-Master-Zertifikat zu erstellen.

[root@server ~]# puppet master --verbose --no-daemonize

Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): 81:C6:BB:8B:1D:71:4C:64:E1:13:54:1B:EC:CF:99:D8:85:90:D1:6C:E8:85:50:3E:03:41:BA:C5:47:A7:4C:E5
Notice: Signed certificate request for ca
Info: Creating a new certificate revocation list
Info: Creating a new SSL key for server.itzgeek.local
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for server.itzgeek.local
Info: Certificate Request fingerprint (SHA256): FF:BE:D4:9B:E4:12:83:79:AE:BE:50:17:76:5F:F5:CD:5F:53:EA:5D:AA:5D:87:9E:7C:C4:BC:1B:8A:C6:FA:5C
Notice: server.itzgeek.local has a waiting certificate request
Notice: Signed certificate request for server.itzgeek.local
Notice: Removing file Puppet::SSL::CertificateRequest server.itzgeek.local at '/var/lib/puppet/ssl/ca/requests/server.itzgeek.local.pem'
Notice: Removing file Puppet::SSL::CertificateRequest server.itzgeek.local at '/var/lib/puppet/ssl/certificate_requests/server.itzgeek.local.pem'
Notice: Starting Puppet master version 3.8.3

Sobald Sie „Hinweis:Starten der Puppet Master-Version “, drücken Sie Strg-C um den Prozess zu beenden.

Konfigurieren Sie einen produktionsbereiten Webserver:

Puppet wird mit einem einfachen Puppet-Master-Webserver geliefert, der jedoch nicht für reale Lasten verwendet werden kann. Wir müssen einen Webserver in Produktionsqualität konfigurieren, bevor wir mit der Verwaltung unserer Knoten mit Puppet beginnen.

[root@server ~]# yum -y install httpd httpd-devel mod_ssl ruby-devel rubygems gcc gcc-c++ pygpgme curl

Passagier- und Apache-Modul installieren.

[root@server ~]# yum install -y mod_passenger

Erstellen Sie drei Verzeichnisse für die Anwendung (ein übergeordnetes Verzeichnis, ein „öffentliches“ Verzeichnis und ein „tmp“-Verzeichnis ), kopieren Sie die Datei ext/rack/config.ru aus dem Puppet-Quellcode in das übergeordnete Verzeichnis und legen Sie den Besitz der Datei config.ru fest.

[root@server ~]# mkdir -p /usr/share/puppet/rack/puppetmasterd
[root@server ~]# mkdir /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp
[root@server ~]# cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/
[root@server ~]# chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru

Fügen Sie einen virtuellen Host für Puppet hinzu, indem Sie die folgende Konfigurationsdatei erstellen.

[root@server ~]# vi /etc/httpd/conf.d/puppetmaster.conf

Fügen Sie den folgenden Inhalt in die virtuelle Hostdatei ein, ändern Sie das Grün Farbige Einträge entsprechend Ihrer Umgebung.

# you probably want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassengerStatThrottleRate 120

Listen 8140

<VirtualHost *:8140>
        SSLEngine on
        SSLProtocol             ALL -SSLv2 -SSLv3
        SSLCipherSuite          EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
        SSLHonorCipherOrder     on

        SSLCertificateFile      /var/lib/puppet/ssl/certs/server.itzgeek.local.pem
        SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/server.itzgeek.local.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile   /var/lib/puppet/ssl/ca/ca_crt.pem
        # If Apache complains about invalid signatures on the CRL, you can try disabling
        # CRL checking by commenting the next line, but this is not recommended.
        SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem
        # Apache 2.4 introduces the SSLCARevocationCheck directive and sets it to none
        # which effectively disables CRL checking; if you are using Apache 2.4+ you must
        # specify 'SSLCARevocationCheck chain' to actually use the CRL.
        # SSLCARevocationCheck chain
        SSLVerifyClient optional
        SSLVerifyDepth  1
        # The `ExportCertData` option is needed for agent certificate expiration warnings
        SSLOptions +StdEnvVars +ExportCertData

        # This header needs to be set if using a loadbalancer or proxy
        RequestHeader unset X-Forwarded-For

        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

         DocumentRoot /usr/share/puppet/rack/puppetmasterd/public
        RackBaseURI /
        <Directory /usr/share/puppet/rack/puppetmasterd/>
                Options None
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>        

Starten Sie den Apache-Server neu, um den virtuellen Puppet-Host zu übernehmen. Führen Sie dazu den folgenden Befehl auf dem Terminal aus.

[root@server ~]# systemctl restart  httpd.service

Deaktivieren Sie den Puppet-Dienst und aktivieren Sie den Apache-Server, um beim Systemstart automatisch zu starten.

[root@server ~]# systemctl disable puppet.service
[root@server ~]# systemctl enable httpd.service

Firewall:

Puppet lauscht auf Port Nr. 8140; Konfigurieren Sie die IP-Tabellen, um dies zuzulassen.

[root@server ~]# firewall-cmd --zone=public --add-port=8140/tcp --permanent
[root@server ~]# firewall-cmd --reload

Puppet auf Agentenknoten installieren:

Installieren Sie auf Ihrem Client-Rechner Puppet Agent mit dem folgenden Befehl.

Hinweis:Sie müssen das Puppet-Repository auf den Agentenknoten konfiguriert haben.

[root@client ~]# yum -y install puppet

Bearbeiten Sie die Puppet-Konfigurationsdatei und legen Sie Puppet-Master-Informationen in der Client-Stanza fest.

Hinweis:Ändern Sie den Wert „Server“ gemäß Ihrer Umgebung. In meinem Fall ist der Server „server.itzgeek.local“

[root@client ~]# vi /etc/puppet/puppet.conf

[agent]
server = server.itzgeek.local

Starten Sie Puppet auf dem Agentenknoten und lassen Sie es automatisch beim Systemstart starten.

[root@client ~]# systemctl start  puppet.service
[root@client ~]# systemctl enable puppet.service

Sie würden die folgenden Ereignisse in den Protokollen erhalten.

Oct 21 05:46:45 client systemd: Starting Puppet agent...
Oct 21 05:46:46 client systemd: Started Puppet agent.
Oct 21 05:47:03 client systemd: Reloading.
Oct 21 05:49:10 client puppet-agent[2694]: Did not receive certificate

Signieren Sie das Zertifikat des Agentenknotens auf dem Masterserver:

In einer Agent/Master-Bereitstellung muss ein Administrator eine Zertifikatsanforderung für jeden Agentenknoten genehmigen, bevor dieser Knoten Konfigurationen abrufen kann. Agentenknoten fordern Zertifikate an, wenn sie zum ersten Mal versuchen, sie auszuführen.

Melden Sie sich beim Puppet-Master-Server an und führen Sie den folgenden Befehl aus, um ausstehende Anfragen anzuzeigen.

[root@server ~]# puppet cert list

"client.itzgeek.local" (SHA256) D4:88:EC:C5:0A:F7:5D:4E:32:C5:B3:61:E0:51:7B:0C:CD:B3:49:9E:68:0B:E7:5D:75:19:1D:0B:92:8A:E7:C1

Führen Sie puppet cert sign aus, um eine Anfrage zu signieren, oder puppet cert sign –all, um alle ausstehenden Anfragen zu signieren.

[root@server ~]# puppet cert sign client.itzgeek.local

Notice: Signed certificate request for client.itzgeek.local
Notice: Removing file Puppet::SSL::CertificateRequest client.itzgeek.local at '/var/lib/puppet/ssl/ca/requests/client.itzgeek.local.pem'

Führen Sie den folgenden Befehl auf dem Clientcomputer aus, um das Zertifikat zu prüfen

[root@client ~]# puppet agent -t

Info: Caching certificate for client.itzgeek.local
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for client.itzgeek.local
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.itzgeek.local
Info: Applying configuration version '1445401911'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.09 seconds

Das ist alles. Jetzt haben Sie Puppet Master und einen Agenten erfolgreich konfiguriert. Es ist an der Zeit, Manifeste zu erstellen (Client-Konfiguration). Bleiben Sie dran.

Dieses Tutorial ist für eine alte Version von Puppet Master, einige Links sind defekt und funktionieren möglicherweise nicht wie erwartet. Eine neue Version ist hier verfügbar:How to Install Puppet 4.x On CentOS 7 / RHEL 7.
Cent OS
  1. Installieren und konfigurieren Sie HAProxy unter RHEL 8 / CentOS 8 Linux

  2. So installieren und konfigurieren Sie R auf einem Linux-System mit RHEL 8 / CentOS 8

  3. FTP-Server unter CentOS 7 / RHEL 7 installieren und konfigurieren – (vsftpfd)

  4. CentOS / RHEL 7 :So installieren und konfigurieren Sie Telnet

  5. So installieren und konfigurieren Sie Samba in CentOS / RHEL

So installieren und konfigurieren Sie Nagios Core unter CentOS 8 / RHEL 8

So installieren und konfigurieren Sie den VNC-Server in CentOS 7 / RHEL 7

Installieren und konfigurieren Sie GlusterFS unter CentOS 7 / RHEL 7

So installieren und konfigurieren Sie Jenkins unter CentOS 8 / RHEL 8

So installieren und konfigurieren Sie MariaDB in CentOS / RHEL 7

So installieren und konfigurieren Sie VNC Server unter CentOS/RHEL 8