Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision |
tachtler:ansible [2020/01/05 09:01] – [sudoers.yml] klaus | tachtler:ansible [2020/03/21 06:28] – [Vorbereitung] klaus |
---|
| |
===== Installation ===== | ===== Installation ===== |
| |
| ==== CentOS ==== |
| |
Zur Installation von [[https://www.ansible.com/|Ansible]] wird nachfolgendes Paket benötigt: | Zur Installation von [[https://www.ansible.com/|Ansible]] wird nachfolgendes Paket benötigt: |
</code> | </code> |
| |
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket **''ansible''** installiert wurden. | Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit dem Paket **''ansible''** installiert wurden. |
<code> | <code> |
# rpm -qil ansible | # rpm -qil ansible |
executable location = /usr/bin/ansible | executable location = /usr/bin/ansible |
python version = 3.6.8 (default, Oct 7 2019, 17:58:22) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] | python version = 3.6.8 (default, Oct 7 2019, 17:58:22) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] |
| </code> |
| |
| ==== ArchLinux ==== |
| |
| Mit nachfolgendem Befehl, wird das Pakete **''ansible''** installiert: |
| <code> |
| # pacman -S ansible --noconfirm |
| resolving dependencies... |
| looking for conflicting packages... |
| |
| Packages (24) libnsl-1.2.0-2 libsodium-1.0.18-1 libyaml-0.2.2-1 |
| python-3.8.1-1 python-appdirs-1.4.3-5 python-asn1crypto-1.2.0-3 |
| python-bcrypt-3.1.7-3 python-cffi-1.13.2-2 |
| python-cryptography-2.8-1 python-idna-2.8-3 |
| python-jinja-2.10.3-3 python-markupsafe-1.1.1-3 |
| python-ordered-set-3.1.1-1 python-packaging-19.2-5 |
| python-paramiko-2.6.0-3 python-ply-3.11-4 python-pyasn1-0.4.8-1 |
| python-pycparser-2.19-3 python-pynacl-1.3.0-3 |
| python-pyparsing-2.4.6-1 python-setuptools-1:43.0.0-1 |
| python-six-1.13.0-2 python-yaml-5.1.2-3 ansible-2.9.2-1 |
| |
| Total Download Size: 52.42 MiB |
| Total Installed Size: 307.49 MiB |
| |
| :: Proceed with installation? [Y/n] |
| :: Retrieving packages... |
| libnsl-1.2.0-2-x... 57.4 KiB 660 KiB/s 00:00 [######################] 100% |
| python-3.8.1-1-x... 37.2 MiB 1294 KiB/s 00:29 [######################] 100% |
| libyaml-0.2.2-1-... 54.7 KiB 1656 KiB/s 00:00 [######################] 100% |
| python-ply-3.11-... 73.3 KiB 1559 KiB/s 00:00 [######################] 100% |
| python-pycparser... 164.2 KiB 1493 KiB/s 00:00 [######################] 100% |
| python-cffi-1.13... 210.1 KiB 1501 KiB/s 00:00 [######################] 100% |
| python-six-1.13.... 20.9 KiB 1496 KiB/s 00:00 [######################] 100% |
| python-idna-2.8-... 66.4 KiB 1443 KiB/s 00:00 [######################] 100% |
| python-appdirs-1... 14.2 KiB 2033 KiB/s 00:00 [######################] 100% |
| python-pyparsing... 110.4 KiB 1512 KiB/s 00:00 [######################] 100% |
| python-packaging... 38.9 KiB 1692 KiB/s 00:00 [######################] 100% |
| python-ordered-s... 12.5 KiB 959 KiB/s 00:00 [######################] 100% |
| python-setuptool... 296.1 KiB 1410 KiB/s 00:00 [######################] 100% |
| python-asn1crypt... 163.9 KiB 1490 KiB/s 00:00 [######################] 100% |
| python-cryptogra... 340.7 KiB 1420 KiB/s 00:00 [######################] 100% |
| python-pyasn1-0.... 108.2 KiB 1546 KiB/s 00:00 [######################] 100% |
| python-markupsaf... 22.4 KiB 1320 KiB/s 00:00 [######################] 100% |
| python-yaml-5.1.... 177.2 KiB 1441 KiB/s 00:00 [######################] 100% |
| python-bcrypt-3.... 30.1 KiB 1309 KiB/s 00:00 [######################] 100% |
| libsodium-1.0.18... 158.6 KiB 1482 KiB/s 00:00 [######################] 100% |
| python-pynacl-1.... 76.1 KiB 1522 KiB/s 00:00 [######################] 100% |
| python-paramiko-... 247.7 KiB 1424 KiB/s 00:00 [######################] 100% |
| python-jinja-2.1... 199.2 KiB 1364 KiB/s 00:00 [######################] 100% |
| ansible-2.9.2-1-any 12.7 MiB 1342 KiB/s 00:10 [######################] 100% |
| (24/24) checking keys in keyring [######################] 100% |
| (24/24) checking package integrity [######################] 100% |
| (24/24) loading package files [######################] 100% |
| (24/24) checking for file conflicts [######################] 100% |
| (24/24) checking available disk space [######################] 100% |
| :: Processing package changes... |
| ( 1/24) installing libnsl [######################] 100% |
| ( 2/24) installing python [######################] 100% |
| Optional dependencies for python |
| python-setuptools [pending] |
| python-pip |
| sqlite [installed] |
| mpdecimal: for decimal |
| xz: for lzma [installed] |
| tk: for tkinter |
| ( 3/24) installing libyaml [######################] 100% |
| ( 4/24) installing python-yaml [######################] 100% |
| ( 5/24) installing python-ply [######################] 100% |
| ( 6/24) installing python-pycparser [######################] 100% |
| ( 7/24) installing python-cffi [######################] 100% |
| ( 8/24) installing python-six [######################] 100% |
| ( 9/24) installing python-bcrypt [######################] 100% |
| (10/24) installing python-idna [######################] 100% |
| (11/24) installing python-appdirs [######################] 100% |
| (12/24) installing python-pyparsing [######################] 100% |
| (13/24) installing python-packaging [######################] 100% |
| (14/24) installing python-ordered-set [######################] 100% |
| (15/24) installing python-setuptools [######################] 100% |
| (16/24) installing python-asn1crypto [######################] 100% |
| (17/24) installing python-cryptography [######################] 100% |
| (18/24) installing python-pyasn1 [######################] 100% |
| (19/24) installing libsodium [######################] 100% |
| (20/24) installing python-pynacl [######################] 100% |
| (21/24) installing python-paramiko [######################] 100% |
| (22/24) installing python-markupsafe [######################] 100% |
| (23/24) installing python-jinja [######################] 100% |
| Optional dependencies for python-jinja |
| python-babel: for i18n support |
| (24/24) installing ansible [######################] 100% |
| Optional dependencies for ansible |
| sshpass: for ssh connections with password |
| python-passlib: crypt values for vars_prompt |
| python-pyopenssl: openssl modules |
| python-netaddr: for the ipaddr filter |
| python-systemd: log to journal |
| python-pywinrm: connect to Windows machines |
| python-dnspython: for dig lookup |
| python-ovirt-engine-sdk: ovirt support |
| python-boto3: aws_s3 module |
| python-jmespath: json_query support |
| acme-tiny: openssl_certificate module |
| :: Running post-transaction hooks... |
| (1/1) Arming ConditionNeedsUpdate... |
| </code> |
| |
| Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit dem Paket **''ansible''** installiert wurden. |
| <code> |
| # pacman -Ql ansible |
| ansible /etc/ |
| ansible /etc/ansible/ |
| ansible /etc/ansible/ansible.cfg |
| ansible /usr/ |
| ansible /usr/bin/ |
| ansible /usr/bin/ansible |
| ansible /usr/bin/ansible-config |
| ansible /usr/bin/ansible-connection |
| ansible /usr/bin/ansible-console |
| ansible /usr/bin/ansible-doc |
| ansible /usr/bin/ansible-galaxy |
| ansible /usr/bin/ansible-inventory |
| ansible /usr/bin/ansible-playbook |
| ansible /usr/bin/ansible-pull |
| ansible /usr/bin/ansible-test |
| ansible /usr/bin/ansible-vault |
| ansible /usr/lib/ |
| ansible /usr/lib/python3.8/ |
| ... |
| [Kürzung der Ausgabe] |
| ... |
| ansible /usr/share/ |
| ansible /usr/share/ansible/ |
| ansible /usr/share/ansible/doc/ |
| ansible /usr/share/ansible/doc/examples/ |
| ansible /usr/share/ansible/doc/examples/ansible.cfg |
| ansible /usr/share/ansible/doc/examples/hosts |
| ansible /usr/share/ansible/doc/examples/scripts/ |
| ansible /usr/share/ansible/doc/examples/scripts/ConfigureRemotingForAnsible.ps1 |
| ansible /usr/share/ansible/doc/examples/scripts/upgrade_to_ps3.ps1 |
| ansible /usr/share/doc/ |
| ansible /usr/share/doc/ansible/ |
| ansible /usr/share/doc/ansible/COPYING |
| ansible /usr/share/man/ |
| ansible /usr/share/man/man1/ |
| ansible /usr/share/man/man1/ansible-config.1.gz |
| ansible /usr/share/man/man1/ansible-console.1.gz |
| ansible /usr/share/man/man1/ansible-doc.1.gz |
| ansible /usr/share/man/man1/ansible-galaxy.1.gz |
| ansible /usr/share/man/man1/ansible-inventory.1.gz |
| ansible /usr/share/man/man1/ansible-playbook.1.gz |
| ansible /usr/share/man/man1/ansible-pull.1.gz |
| ansible /usr/share/man/man1/ansible-vault.1.gz |
| ansible /usr/share/man/man1/ansible.1.gz |
| </code> |
| |
| Zum Abschluss kann mit nachfolgendem Befehl überprüft werden, ob ein Aufruf möglich ist und [[https://www.ansible.com/|Ansible]] nutzbar ist: |
| <code> |
| # ansible --version |
| ansible 2.9.2 |
| config file = /etc/ansible/ansible.cfg |
| configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] |
| ansible python module location = /usr/lib/python3.8/site-packages/ansible |
| executable location = /usr/bin/ansible |
| python version = 3.8.1 (default, Dec 21 2019, 20:57:38) [GCC 9.2.0] |
</code> | </code> |
| |
===== Vorbereitung ===== | ===== Vorbereitung ===== |
| |
| :!: **HINWEIS** - **Nachfolgende Schritte sind __NICHT__ mehr durchzuführen, wenn die Installation wie unter nachfolgendem internen Link fortgesetzte werden soll:** |
| * [[tachtler:ansible_mit_ansible_einrichten|Ansible mit Ansible einrichten]] |
| |
Für die spätere Kommunikation via **SSH**, kann mit nachfolgendem Befehl ein **SSH-Schlüsselpaar** erzeugt werden, welches dann später zur Anmeldung an den entsprechenden Servern verwendet werden kann. | Für die spätere Kommunikation via **SSH**, kann mit nachfolgendem Befehl ein **SSH-Schlüsselpaar** erzeugt werden, welches dann später zur Anmeldung an den entsprechenden Servern verwendet werden kann. |
* <code>-a 97</code> | * <code>-a 97</code> |
| |
''-a rounds'' - Beim Speichern eines privaten Schlüssels gibt diese Option die Anzahl der KDF (Schlüsselableitungsfunktion) verwendeten Runden. Höhere Zahlen ergeben langsamere "Passphrasenüberprüfung" und erhöhte Widerstandsfähigkeit gegen das Knacken des Passworts erzwingen (falls die Schlüssel gestohlen werden). | ''-a rounds'' - Beim Speichern eines privaten Schlüssels gibt diese Option die Anzahl der KDF (Schlüsselableitungsfunktion) verwendeten Runden an. Höhere Zahlen ergeben langsamere "Passphrasenüberprüfung" und erhöhte Widerstandsfähigkeit gegen das Knacken des Passworts erzwingen (falls die Schlüssel gestohlen werden). |
| |
Bei der Überprüfung von DH-GEX-Kandidaten (mit dem Befehl ''-T''). Diese Option gibt die Anzahl der durchzuführenden Primzahltests an. | Bei der Überprüfung von DH-GEX-Kandidaten (mit dem Befehl ''-T''). Diese Option gibt die Anzahl der durchzuführenden Primzahltests an. |
- Für den Benutzer **''klaus''** | - Für den Benutzer **''klaus''** |
- überprüfen, ob eine Gruppe **''wheel''** existiert und | - überprüfen, ob eine Gruppe **''wheel''** existiert und |
- in einer **__neuen__** Datei **''/etc/sudoers.d/020_nopasswd_all_for_wheel''** den Eintrag **''%wheel ALL=(ALL) NOPASSWD: ALL''** vorhalten | - **__optional__** - in einer **__neuen__** Datei **''/etc/sudoers.d/020_nopasswd_all_for_wheel''** den Eintrag **''%wheel ALL=(ALL) NOPASSWD: ALL''** vorhalten |
- dies zu **''validieren''** und | - dies zu **''validieren''** und |
- den Benutzer **''klaus''** **__zusätzlich__** in die Gruppe **''wheels''** aufzunehmen und | - den Benutzer **''klaus''** **__zusätzlich__** in die Gruppe **''wheels''** aufzunehmen und |
umzusetzen. | umzusetzen. |
| |
:!: **WICHTIG** - **Durch die Aufnhame eines Benutzers, hier ''klaus'', in die Gruppe ''wheel'' erhält dieser die Möglichkeit, nach einer erfolgreichen Anmeldung am jeweiligen Server, ''sudo'' (das Wechseln auf den Benutzer ''root'', bzw. Erlangung dessen Rechte) __ohne__ Passworteingabe zu erlangen!** | :!: **WICHTIG** - **Durch die Aufnahme eines Benutzers, hier ''klaus'', in die Gruppe ''wheel'' erhält dieser die Möglichkeit, nach einer erfolgreichen Anmeldung am jeweiligen Server, ''sudo'' (das Wechseln auf den Benutzer ''root'', bzw. Erlangung dessen Rechte) __optional__ - __ohne__ Passworteingabe zu erlangen!** |
| |
:!: **WICHTIG** - Damit kann nun ermöglicht werden, dass der Benutzer, hier **''klaus''**, sich auf einem Server via **SSH-Schlüssel** verbinden kann **__und__** Befehle auf dem jeweiligen Server ausführen kann, **__auch__** mit Rechten des Benutzers **''root''** via **''sudo''**. | :!: **WICHTIG** - Damit kann nun ermöglicht werden, dass der Benutzer, hier **''klaus''**, sich auf einem Server via **SSH-Schlüssel** verbinden kann **__und__** Befehle auf dem jeweiligen Server ausführen kann, **__auch__** mit Rechten des Benutzers **''root''** via **''sudo''**. |
* [[https://docs.ansible.com/ansible/2.8/user_guide/intro_getting_started.html#remote-connection-information|Ansible - Docs » User Guide » Getting Started - Remote Connection Information]] | * [[https://docs.ansible.com/ansible/2.8/user_guide/intro_getting_started.html#remote-connection-information|Ansible - Docs » User Guide » Getting Started - Remote Connection Information]] |
| |
* **„Zitat“** - „[[https://www.ansible.com/|Ansible]] stellt keinen Kanal zur Verfügung, der die Kommunikation zwischen dem Benutzer und dem ssh-Prozess erlaubt, um ein Passwort manuell zu akzeptieren und einen ssh-Schlüssel zu entschlüsseln, wenn das ssh-Verbindungs-Plugin verwendet wird (was der Standard ist). Die Verwendung des ''ssh-agent'' wird dringend empfohlen.“ | * **„Zitat“** - „[[https://www.ansible.com/|Ansible]] stellt keinen Kanal zur Verfügung, der die Kommunikation zwischen dem Benutzer und dem SSH-Prozess erlaubt, um ein Passwort manuell zu akzeptieren und einen SSH-Schlüssel zu entschlüsseln, wenn das SSH-Verbindungs-Plugin verwendet wird (was der Standard ist). Die Verwendung des ''ssh-agent'' wird dringend empfohlen.“ |
| |
=== Playbook === | === Playbook === |
* [[https://docs.ansible.com/ansible/2.8/user_guide/intro_getting_started.html#remote-connection-information|Ansible - Docs » User Guide » Getting Started - Remote Connection Information]] | * [[https://docs.ansible.com/ansible/2.8/user_guide/intro_getting_started.html#remote-connection-information|Ansible - Docs » User Guide » Getting Started - Remote Connection Information]] |
| |
* **„Zitat“** - „[[https://www.ansible.com/|Ansible]] stellt keinen Kanal zur Verfügung, der die Kommunikation zwischen dem Benutzer und dem ssh-Prozess erlaubt, um ein Passwort manuell zu akzeptieren und einen ssh-Schlüssel zu entschlüsseln, wenn das ssh-Verbindungs-Plugin verwendet wird (was der Standard ist). Die Verwendung des ''ssh-agent'' wird dringend empfohlen.“ | * **„Zitat“** - „[[https://www.ansible.com/|Ansible]] stellt keinen Kanal zur Verfügung, der die Kommunikation zwischen dem Benutzer und dem SSH-Prozess erlaubt, um ein Passwort manuell zu akzeptieren und einen SSH-Schlüssel zu entschlüsseln, wenn das SSH-Verbindungs-Plugin verwendet wird (was der Standard ist). Die Verwendung des ''ssh-agent'' wird dringend empfohlen.“ |
| |
<code> | <code> |
| |
:!: **HINWEIS** - **Die Ausführungen der Befehle erfolgen als angemeldeter Benutzer ''klaus''** | :!: **HINWEIS** - **Die Ausführungen der Befehle erfolgen als angemeldeter Benutzer ''klaus''** |
| |
| :!: **HINWEIS** - **Das ''BECOME password:'' ist das des Benutzers ''klaus''** |
| |
Durch den erneuten Aufruf des nachfolgenden Befehls, kann überprüft werden, ob alle Server via **''SSH''** erreichbar sind: | Durch den erneuten Aufruf des nachfolgenden Befehls, kann überprüft werden, ob alle Server via **''SSH''** erreichbar sind: |