Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
tachtler:ansible [2019/12/23 08:30] – [sudoers.yml] klaus | tachtler:ansible [2020/02/03 12:14] – [ArchLinux] 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 |
</code> | </code> |
| |
Zum Abschluss kann mit nachfolgendem Befehl überprüft werden, ob ein Aufruf möglich ist und [[https://asciidoctor.org/|Asciidoctor]] nutzbar ist: | Zum Abschluss kann mit nachfolgendem Befehl überprüft werden, ob ein Aufruf möglich ist und [[https://www.ansible.com/|Ansible]] nutzbar ist: |
<code> | <code> |
# ansible --version | # ansible --version |
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> |
| |
* <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. |
- **''become_method=sudo''** - welcher **Befehl** zur Rechteerlangung ausgeführt werden soll | - **''become_method=sudo''** - welcher **Befehl** zur Rechteerlangung ausgeführt werden soll |
- **''become_user=root''** - der **Benutzer**, dessen Rechte erlangt werden sollen | - **''become_user=root''** - der **Benutzer**, dessen Rechte erlangt werden sollen |
- **''become_ask_pass=False''** - ob nach einem **Passwort** gefragt werden soll | - **''become_ask_pass=True''** - ob nach einem **Passwort** gefragt werden soll |
| |
Nachfolgende Änderungen sind dafür durchzuführen. | Nachfolgende Änderungen sind dafür durchzuführen. |
become_method=sudo | become_method=sudo |
become_user=root | become_user=root |
become_ask_pass=False | become_ask_pass=True |
</code> | </code> |
| |
- 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 der Datei **''/etc/sudoers''** der Eintrag **''%wheel ALL=(ALL) NOPASSWD: ALL''** vorhanden ist und | - **__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 === |
name: wheel | name: wheel |
state: present | state: present |
| |
- name: Allow 'wheel' group to have passwordless sudo | # Tachtler - optional - |
copy: | # - name: Allow 'wheel' group to have passwordless sudo |
content: '%wheel ALL=(ALL) NOPASSWD: ALL' | # copy: |
dest: /etc/sudoers.d/020_nopasswd_all_for_wheel | # content: '%wheel ALL=(ALL) NOPASSWD: ALL' |
owner: root | # dest: /etc/sudoers.d/020_nopasswd_all_for_wheel |
group: root | # owner: root |
mode: "0640" | # group: root |
validate: visudo -cf %s | # mode: "0440" |
| # validate: visudo -cf %s |
| |
- name: Add sudoers users to 'wheel' group | - name: Add sudoers users to 'wheel' group |
=== Ausführung === | === Ausführung === |
| |
ZU Ausführung, soll mit nachfolgendem Befehl in das Verzeichnis | Zur Ausführung, soll mit nachfolgendem Befehl in das Verzeichnis |
* ''/etc/ansible'' | * ''/etc/ansible'' |
gewechselt werden: | gewechselt werden: |
| |
TASK [Make sure we have a 'wheel' group] *************************************** | TASK [Make sure we have a 'wheel' group] *************************************** |
| ok: [192.168.122.56] => {"changed": false, "gid": 10, "name": "wheel", "state": "present", "system": false} |
ok: [192.168.122.66] => {"changed": false, "gid": 10, "name": "wheel", "state": "present", "system": false} | ok: [192.168.122.66] => {"changed": false, "gid": 10, "name": "wheel", "state": "present", "system": false} |
ok: [192.168.122.56] => {"changed": false, "gid": 10, "name": "wheel", "state": "present", "system": false} | |
| |
TASK [Allow 'wheel' group to have passwordless sudo] *************************** | |
changed: [192.168.122.66] => {"changed": true, "checksum": "9126b009e0fddb335198d18b659e74dec53c424a", "dest": "/etc/sudoers.d/020_nopasswd_all_for_wheel", "gid": 0, "group": "root", "md5sum": "c06c2d51d25ed9166e144784184f255e", "mode": "0640", "owner": "root", "secontext": "system_u:object_r:etc_t:s0", "size": 30, "src": "/root/.ansible/tmp/ansible-tmp-1576998048.0499349-87723951136062/source", "state": "file", "uid": 0} | |
changed: [192.168.122.56] => {"changed": true, "checksum": "9126b009e0fddb335198d18b659e74dec53c424a", "dest": "/etc/sudoers.d/020_nopasswd_all_for_wheel", "gid": 0, "group": "root", "md5sum": "c06c2d51d25ed9166e144784184f255e", "mode": "0640", "owner": "root", "secontext": "system_u:object_r:etc_t:s0", "size": 30, "src": "/root/.ansible/tmp/ansible-tmp-1576998048.0654407-202045979539562/source", "state": "file", "uid": 0} | |
| |
TASK [Add sudoers users to 'wheel' group] ************************************** | TASK [Add sudoers users to 'wheel' group] ************************************** |
| changed: [192.168.122.56] => (item=klaus) => {"ansible_loop_var": "item", "append": true, "changed": true, "comment": "Klaus Tachtler", "group": 1000, "groups": "wheel", "home": "/home/klaus", "item": "klaus", "move_home": false, "name": "klaus", "shell": "/bin/bash", "state": "present", "uid": 1000} |
changed: [192.168.122.66] => (item=klaus) => {"ansible_loop_var": "item", "append": true, "changed": true, "comment": "Klaus Tachtler", "group": 1000, "groups": "wheel", "home": "/home/klaus", "item": "klaus", "move_home": false, "name": "klaus", "shell": "/bin/bash", "state": "present", "uid": 1000} | changed: [192.168.122.66] => (item=klaus) => {"ansible_loop_var": "item", "append": true, "changed": true, "comment": "Klaus Tachtler", "group": 1000, "groups": "wheel", "home": "/home/klaus", "item": "klaus", "move_home": false, "name": "klaus", "shell": "/bin/bash", "state": "present", "uid": 1000} |
changed: [192.168.122.56] => (item=klaus) => {"ansible_loop_var": "item", "append": true, "changed": true, "comment": "Klaus Tachtler", "group": 1000, "groups": "wheel", "home": "/home/klaus", "item": "klaus", "move_home": false, "name": "klaus", "shell": "/bin/bash", "state": "present", "uid": 1000} | |
| |
TASK [Set exclusive authorized key for sudoers taken from file] **************** | TASK [Set exclusive authorized key for sudoers taken from file] **************** |
| |
PLAY RECAP ********************************************************************* | PLAY RECAP ********************************************************************* |
192.168.122.56 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 | 192.168.122.56 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
192.168.122.66 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 | 192.168.122.66 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
| |
</code> | </code> |
* <code>-v</code> | * <code>-v</code> |
| |
Der **Parameter** - ''-v'' ermöglicht die Ausgabe von erweiterten Informationen (verbose) währen der Ausführung. | Der **Parameter** ''-v'' ermöglicht die Ausgabe von erweiterten Informationen (verbose) währen der Ausführung. |
| |
* <code>sudoers.yml </code> | * <code>sudoers.yml </code> |
* <code>-u root</code> | * <code>-u root</code> |
| |
Der **Parameter** - ''-u root'' bedingt die Ausführung unter dem Benutzer **''root''**, um sich mit diesen via **SSH** auf die einzelnen Server zu verbinden. | Der **Parameter** ''-u root'' bedingt die Ausführung unter dem Benutzer **''root''**, um sich mit diesen via **SSH** auf die einzelnen Server zu verbinden. |
| |
* <code>--ask-pass</code> | * <code>--ask-pass</code> |
| |
Der **Parameter** - ''--ask-pass'' erzwingt die Eingabe des Passworts des **''root''**, um sich mit diesen via **SSH** auf die einzelnen Server zu verbinden. | Der **Parameter** ''--ask-pass'' erzwingt die Eingabe des Passworts des **''root''**, um sich mit diesen via **SSH** auf die einzelnen Server zu verbinden. |
| |
=== Überprüfung === | === Überprüfung === |
* [[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: |
<code ini> | <code ini> |
$ ansible all -m ping | $ ansible all -m ping |
| BECOME password: |
192.168.122.66 | SUCCESS => { | 192.168.122.66 | SUCCESS => { |
"ansible_facts": { | "ansible_facts": { |
Ein weiterer Test könnte ebenfalls wiederholt werden, um bestätigen zu können, das auch Befehle auf den entsprechenden Server ausgeführt werden können, wie nachfolgender Befehl zeigt: | Ein weiterer Test könnte ebenfalls wiederholt werden, um bestätigen zu können, das auch Befehle auf den entsprechenden Server ausgeführt werden können, wie nachfolgender Befehl zeigt: |
<code ini> | <code ini> |
$ ansible all -a "/bin/echo hello" | $ ansible all -a "/bin/echo hello" |
| BECOME password: |
192.168.122.66 | CHANGED | rc=0 >> | 192.168.122.66 | CHANGED | rc=0 >> |
hello | hello |
<code ini> | <code ini> |
$ ansible all -a "ls /root" | $ ansible all -a "ls /root" |
| BECOME password: |
192.168.122.66 | CHANGED | rc=0 >> | 192.168.122.66 | CHANGED | rc=0 >> |
anaconda-ks.cfg | anaconda-ks.cfg |