Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:ansible

Ansible

ist eine Open-Source-Software zur Automatisierung, Orchestrierung und Konfiguration von Serversystemen. Mit Ansible erfolgt die Verwaltung von Servern unter anderem über SSH und erfordert keinerlei zusätzliche Software auf dem zu verwaltenden System. Die Ausgabe erfolgt im JSON-Format und Module können in jeder beliebigen Programmiersprache geschrieben sein. Das System nutzt überwiegend YAML zur Konfiguration von wiederverwendbarer Beschreibungen der Systeme.

Beschreibung Externer Link
Homepage https://www.ansible.com/
Dokumentation https://docs.ansible.com/
Installation https://releases.ansible.com/ansible/rpm/

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root zu werden, geben Sie bitte nachfolgenden Befehl ein:

$ su -
Password: 

Vorbereitung

Zur Installation von Ansible über ein rpm-Paket, soll hier das Repository eines Drittanbieters genutzt werden, da Ansible nicht im CentOS-Repository enthalten ist.

Nachfolgend soll das Repository des Drittanbieters EPEL genutzt werden. Eine Anleitung, wie das Repository des Drittanbieters EPEL eingebunden werden könnte, kann unter nachfolgendem internen Link nachgelesen werden:

Installation

CentOS

Zur Installation von Ansible wird nachfolgendes Paket benötigt:

  • ansible - ist im epel-Repository des Drittanbieters EPEL enthalten
  • policycoreutils-python-utils - ist im BaseOS-Repository enthalten - und ist erforderlich, wenn SELinux-Konfigurationen in Playbooks durchgeführt werden sollen.

Mit nachfolgendem Befehl, wird das Pakete ansible installiert:

# dnf install ansible
Last metadata expiration check: 0:05:02 ago on Sa 21 Dez 2019 07:52:47 CET.
Dependencies resolved.
================================================================================
 Package                 Arch        Version               Repository      Size
================================================================================
Installing:
 ansible                 noarch      2.8.5-2.el8           epel            15 M
Installing dependencies:
 python3-pyyaml          x86_64      3.12-12.el8           BaseOS         193 k
 python3-setuptools      noarch      39.2.0-4.el8          BaseOS         162 k
 libsodium               x86_64      1.0.18-2.el8          epel           162 k
 python3-bcrypt          x86_64      3.1.6-2.el8.1         epel            44 k
 python3-pynacl          x86_64      1.3.0-5.el8           epel           100 k
 sshpass                 x86_64      1.06-9.el8            epel            27 k
 python3-babel           noarch      2.5.1-3.el8           AppStream      4.8 M
 python3-jinja2          noarch      2.10.1-2.el8_0        AppStream      538 k
 python3-jmespath        noarch      0.9.0-11.el8          AppStream       45 k
 python3-markupsafe      x86_64      0.23-19.el8           AppStream       39 k
 python3-pyasn1          noarch      0.3.7-6.el8           AppStream      126 k
 python3-pytz            noarch      2017.2-9.el8          AppStream       54 k
Installing weak dependencies:
 python3-paramiko        noarch      2.4.3-1.el8           epel           289 k

Transaction Summary
================================================================================
Install  14 Packages

Total download size: 21 M
Installed size: 105 M
Is this ok [y/N]: y
Downloading Packages:
(1/14): python3-setuptools-39.2.0-4.el8.noarch. 122 kB/s | 162 kB     00:01    
(2/14): python3-pyyaml-3.12-12.el8.x86_64.rpm   143 kB/s | 193 kB     00:01    
(3/14): python3-bcrypt-3.1.6-2.el8.1.x86_64.rpm 109 kB/s |  44 kB     00:00    
(4/14): libsodium-1.0.18-2.el8.x86_64.rpm       316 kB/s | 162 kB     00:00    
(5/14): python3-pynacl-1.3.0-5.el8.x86_64.rpm   381 kB/s | 100 kB     00:00    
(6/14): sshpass-1.06-9.el8.x86_64.rpm           199 kB/s |  27 kB     00:00    
(7/14): python3-paramiko-2.4.3-1.el8.noarch.rpm 465 kB/s | 289 kB     00:00    
(8/14): python3-jinja2-2.10.1-2.el8_0.noarch.rp 270 kB/s | 538 kB     00:01    
(9/14): python3-jmespath-0.9.0-11.el8.noarch.rp 202 kB/s |  45 kB     00:00    
(10/14): python3-markupsafe-0.23-19.el8.x86_64. 170 kB/s |  39 kB     00:00    
(11/14): python3-pyasn1-0.3.7-6.el8.noarch.rpm  252 kB/s | 126 kB     00:00    
(12/14): python3-pytz-2017.2-9.el8.noarch.rpm   207 kB/s |  54 kB     00:00    
(13/14): python3-babel-2.5.1-3.el8.noarch.rpm   407 kB/s | 4.8 MB     00:12    
(14/14): ansible-2.8.5-2.el8.noarch.rpm         923 kB/s |  15 MB     00:16    
--------------------------------------------------------------------------------
Total                                           1.1 MB/s |  21 MB     00:19     
warning: /var/cache/dnf/epel-6519ee669354a484/packages/ansible-2.8.5-2.el8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY
Extra Packages for Enterprise Linux 8 - x86_64  1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x2F86D6A1:
 Userid     : "Fedora EPEL (8) <epel@fedoraproject.org>"
 Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : python3-jmespath-0.9.0-11.el8.noarch                  1/14 
  Installing       : python3-setuptools-39.2.0-4.el8.noarch                2/14 
  Installing       : python3-pytz-2017.2-9.el8.noarch                      3/14 
  Installing       : python3-babel-2.5.1-3.el8.noarch                      4/14 
  Installing       : python3-pyasn1-0.3.7-6.el8.noarch                     5/14 
  Installing       : python3-markupsafe-0.23-19.el8.x86_64                 6/14 
  Installing       : python3-jinja2-2.10.1-2.el8_0.noarch                  7/14 
  Installing       : sshpass-1.06-9.el8.x86_64                             8/14 
  Installing       : python3-bcrypt-3.1.6-2.el8.1.x86_64                   9/14 
  Installing       : libsodium-1.0.18-2.el8.x86_64                        10/14 
  Installing       : python3-pynacl-1.3.0-5.el8.x86_64                    11/14 
  Installing       : python3-paramiko-2.4.3-1.el8.noarch                  12/14 
  Installing       : python3-pyyaml-3.12-12.el8.x86_64                    13/14 
  Installing       : ansible-2.8.5-2.el8.noarch                           14/14 
  Running scriptlet: ansible-2.8.5-2.el8.noarch                           14/14 
  Verifying        : python3-pyyaml-3.12-12.el8.x86_64                     1/14 
  Verifying        : python3-setuptools-39.2.0-4.el8.noarch                2/14 
  Verifying        : ansible-2.8.5-2.el8.noarch                            3/14 
  Verifying        : libsodium-1.0.18-2.el8.x86_64                         4/14 
  Verifying        : python3-bcrypt-3.1.6-2.el8.1.x86_64                   5/14 
  Verifying        : python3-paramiko-2.4.3-1.el8.noarch                   6/14 
  Verifying        : python3-pynacl-1.3.0-5.el8.x86_64                     7/14 
  Verifying        : sshpass-1.06-9.el8.x86_64                             8/14 
  Verifying        : python3-babel-2.5.1-3.el8.noarch                      9/14 
  Verifying        : python3-jinja2-2.10.1-2.el8_0.noarch                 10/14 
  Verifying        : python3-jmespath-0.9.0-11.el8.noarch                 11/14 
  Verifying        : python3-markupsafe-0.23-19.el8.x86_64                12/14 
  Verifying        : python3-pyasn1-0.3.7-6.el8.noarch                    13/14 
  Verifying        : python3-pytz-2017.2-9.el8.noarch                     14/14 

Installed:
  ansible-2.8.5-2.el8.noarch            python3-paramiko-2.4.3-1.el8.noarch    
  python3-pyyaml-3.12-12.el8.x86_64     python3-setuptools-39.2.0-4.el8.noarch 
  libsodium-1.0.18-2.el8.x86_64         python3-bcrypt-3.1.6-2.el8.1.x86_64    
  python3-pynacl-1.3.0-5.el8.x86_64     sshpass-1.06-9.el8.x86_64              
  python3-babel-2.5.1-3.el8.noarch      python3-jinja2-2.10.1-2.el8_0.noarch   
  python3-jmespath-0.9.0-11.el8.noarch  python3-markupsafe-0.23-19.el8.x86_64  
  python3-pyasn1-0.3.7-6.el8.noarch     python3-pytz-2017.2-9.el8.noarch       

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit dem Paket ansible installiert wurden.

# rpm -qil ansible
Name        : ansible
Version     : 2.8.5
Release     : 2.el8
Architecture: noarch
Install Date: Sa 21 Dez 2019 07:58:44 CET
Group       : Unspecified
Size        : 82465568
License     : GPLv3+
Signature   : RSA/SHA256, Fr 11 Okt 2019 02:18:24 CEST, Key ID 21ea45ab2f86d6a1
Source RPM  : ansible-2.8.5-2.el8.src.rpm
Build Date  : Fr 11 Okt 2019 02:09:46 CEST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://ansible.com
Bug URL     : https://bugz.fedoraproject.org/ansible
Summary     : SSH-based configuration management, deployment, and task execution system
Description :
Ansible is a radically simple model-driven configuration management,
multi-node deployment, and remote task execution system. Ansible works
over SSH and does not require any software or daemons to be installed
on remote nodes. Extension modules can be written in any language and
are transferred to managed machines automatically.
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles
/usr/bin/ansible
/usr/bin/ansible-config
/usr/bin/ansible-connection
/usr/bin/ansible-console
/usr/bin/ansible-doc
/usr/bin/ansible-galaxy
/usr/bin/ansible-inventory
/usr/bin/ansible-playbook
/usr/bin/ansible-pull
/usr/bin/ansible-vault
...

Mit nachfolgendem Befehl, wird das Pakete policycoreutils-python-utils installiert:

# dnf install policycoreutils-python-utils
Last metadata expiration check: 0:05:29 ago on Fri 27 Mar 2020 08:05:25 AM CET.
Dependencies resolved.
================================================================================
 Package                    Arch   Version                         Repo    Size
================================================================================
Installing:
 policycoreutils-python-utils
                            noarch 2.9-3.el8_1.1                   BaseOS 250 k
Installing dependencies:
 checkpolicy                x86_64 2.9-1.el8                       BaseOS 348 k
 python3-audit              x86_64 3.0-0.10.20180831git0047a6c.el8 BaseOS  85 k
 python3-libsemanage        x86_64 2.9-1.el8                       BaseOS 127 k
 python3-policycoreutils    noarch 2.9-3.el8_1.1                   BaseOS 2.2 M
 python3-setools            x86_64 4.2.2-1.el8                     BaseOS 600 k

Transaction Summary
================================================================================
Install  6 Packages

Total download size: 3.6 M
Installed size: 11 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): python3-audit-3.0-0.10.20180831git0047a6  43 kB/s |  85 kB     00:01    
(2/6): python3-libsemanage-2.9-1.el8.x86_64.rpm 302 kB/s | 127 kB     00:00    
(3/6): policycoreutils-python-utils-2.9-3.el8_1  98 kB/s | 250 kB     00:02    
(4/6): checkpolicy-2.9-1.el8.x86_64.rpm         128 kB/s | 348 kB     00:02    
(5/6): python3-setools-4.2.2-1.el8.x86_64.rpm   548 kB/s | 600 kB     00:01    
(6/6): python3-policycoreutils-2.9-3.el8_1.1.no 891 kB/s | 2.2 MB     00:02    
--------------------------------------------------------------------------------
Total                                           665 kB/s | 3.6 MB     00:05     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : python3-setools-4.2.2-1.el8.x86_64                     1/6 
  Installing       : python3-libsemanage-2.9-1.el8.x86_64                   2/6 
  Installing       : python3-audit-3.0-0.10.20180831git0047a6c.el8.x86_64   3/6 
  Installing       : checkpolicy-2.9-1.el8.x86_64                           4/6 
  Installing       : python3-policycoreutils-2.9-3.el8_1.1.noarch           5/6 
  Installing       : policycoreutils-python-utils-2.9-3.el8_1.1.noarch      6/6 
  Running scriptlet: policycoreutils-python-utils-2.9-3.el8_1.1.noarch      6/6 
  Verifying        : checkpolicy-2.9-1.el8.x86_64                           1/6 
  Verifying        : policycoreutils-python-utils-2.9-3.el8_1.1.noarch      2/6 
  Verifying        : python3-audit-3.0-0.10.20180831git0047a6c.el8.x86_64   3/6 
  Verifying        : python3-libsemanage-2.9-1.el8.x86_64                   4/6 
  Verifying        : python3-policycoreutils-2.9-3.el8_1.1.noarch           5/6 
  Verifying        : python3-setools-4.2.2-1.el8.x86_64                     6/6 

Installed:
  policycoreutils-python-utils-2.9-3.el8_1.1.noarch                             
  checkpolicy-2.9-1.el8.x86_64                                                  
  python3-audit-3.0-0.10.20180831git0047a6c.el8.x86_64                          
  python3-libsemanage-2.9-1.el8.x86_64                                          
  python3-policycoreutils-2.9-3.el8_1.1.noarch                                  
  python3-setools-4.2.2-1.el8.x86_64                                            

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit dem Paket policycoreutils-python-utils installiert wurden.

# rpm -qil policycoreutils-python-utils
Name        : policycoreutils-python-utils
Version     : 2.9
Release     : 3.el8_1.1
Architecture: noarch
Install Date: Fri 27 Mar 2020 08:11:05 AM CET
Group       : Unspecified
Size        : 139789
License     : GPLv2
Signature   : RSA/SHA256, Wed 05 Feb 2020 01:09:20 AM CET, Key ID 05b555b38483c65d
Source RPM  : policycoreutils-2.9-3.el8_1.1.src.rpm
Build Date  : Tue 04 Feb 2020 08:03:14 PM CET
Build Host  : aah11.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS Buildsys <bugs@centos.org>
Vendor      : CentOS
URL         : https://github.com/SELinuxProject/selinux
Summary     : SELinux policy core python utilities
Description :
The policycoreutils-python-utils package contains the management tools use to manage
an SELinux environment.
/etc/dbus-1/system.d/org.selinux.conf
/usr/bin/audit2allow
/usr/bin/audit2why
/usr/bin/chcat
/usr/bin/sandbox
/usr/sbin/semanage
/usr/share/bash-completion/completions/semanage
/usr/share/man/man1/audit2allow.1.gz
/usr/share/man/man1/audit2why.1.gz
/usr/share/man/man8/chcat.8.gz
/usr/share/man/man8/sandbox.8.gz
/usr/share/man/man8/semanage-boolean.8.gz
/usr/share/man/man8/semanage-dontaudit.8.gz
/usr/share/man/man8/semanage-export.8.gz
/usr/share/man/man8/semanage-fcontext.8.gz
/usr/share/man/man8/semanage-ibendport.8.gz
/usr/share/man/man8/semanage-ibpkey.8.gz
/usr/share/man/man8/semanage-import.8.gz
/usr/share/man/man8/semanage-interface.8.gz
/usr/share/man/man8/semanage-login.8.gz
/usr/share/man/man8/semanage-module.8.gz
/usr/share/man/man8/semanage-node.8.gz
/usr/share/man/man8/semanage-permissive.8.gz
/usr/share/man/man8/semanage-port.8.gz
/usr/share/man/man8/semanage-user.8.gz
/usr/share/man/man8/semanage.8.gz
/usr/share/man/ru/man1/audit2allow.1.gz
/usr/share/man/ru/man1/audit2why.1.gz
/usr/share/man/ru/man8/chcat.8.gz
/usr/share/man/ru/man8/sandbox.8.gz
/usr/share/man/ru/man8/semanage-boolean.8.gz
/usr/share/man/ru/man8/semanage-dontaudit.8.gz
/usr/share/man/ru/man8/semanage-export.8.gz
/usr/share/man/ru/man8/semanage-fcontext.8.gz
/usr/share/man/ru/man8/semanage-ibendport.8.gz
/usr/share/man/ru/man8/semanage-ibpkey.8.gz
/usr/share/man/ru/man8/semanage-import.8.gz
/usr/share/man/ru/man8/semanage-interface.8.gz
/usr/share/man/ru/man8/semanage-login.8.gz
/usr/share/man/ru/man8/semanage-module.8.gz
/usr/share/man/ru/man8/semanage-node.8.gz
/usr/share/man/ru/man8/semanage-permissive.8.gz
/usr/share/man/ru/man8/semanage-port.8.gz
/usr/share/man/ru/man8/semanage-user.8.gz
/usr/share/man/ru/man8/semanage.8.gz

Zum Abschluss kann mit nachfolgendem Befehl überprüft werden, ob ein Aufruf möglich ist und Ansible nutzbar ist:

# ansible --version
ansible 2.8.5
  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.6/site-packages/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)]

ArchLinux

Mit nachfolgendem Befehl, wird das Pakete ansible installiert:

# 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...

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit dem Paket ansible installiert wurden.

# 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

Zum Abschluss kann mit nachfolgendem Befehl überprüft werden, ob ein Aufruf möglich ist und Ansible nutzbar ist:

# 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]

Vorbereitung

:!: HINWEIS - Nachfolgende Schritte sind NICHT mehr durchzuführen, wenn die Installation wie unter nachfolgendem internen Link fortgesetzte werden soll:

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.

ssh-keygen

Nachfolgender Befehl erzeugt eine SSH-Schlüsselpaar vom Typ ed25519:

$ ssh-keygen -t ed25519 -a 97 -C klaus@tachtler.net -f ~/.ssh/id_ed25519
$ ssh-keygen -t ed25519 -a 97 -C klaus@tachtler.net -f ~/.ssh/id_ed25519
Generating public/private ed25519 key pair.
Created directory '/home/klaus/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/klaus/.ssh/id_ed25519.
Your public key has been saved in /home/klaus/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:s8BZ2XNiOgyZUka3M6xMG1jp2dpYwMzv/jiz0E9yOSk klaus@tachtler.net
The key's randomart image is:
+--[ED25519 256]--+
| ..++.. .+       |
|. ++.+o+o o      |
| ..Co=O.   .     |
|   o@+.=         |
|    +O  S        |
|    o +. .       |
|     .. .  o     |
|      +oD.*      |
|     .+=.=..     |
+----[SHA256]-----+

Erklärungen:

  • -t ed25519

-t dsa | ecdsa | ed25519 | rsa - Gibt den Typ des zu erstellenden Schlüssels an.

  • -a 97

-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.

  • -C klaus@tachtler.net

-C comment - Liefert einen neuen Kommentar.

  • -f ~/.ssh/id_ed25519

-f filename - Gibt den Dateinamen der Schlüsseldatei an.

Nachfolgender Parameter muss nicht mehr ab OpenSSH Version 7.8 angegeben werden:

-o - Veranlasste private Schlüssel mit dem neuen OpenSSH-Format statt dem kompatibleren PEM-Format zu speichern. Das neue Format hat eine erhöhte Widerstandsfähigkeit gegen das Knacken von Brute-Force-Passwörtern, wird aber von Versionen von OpenSSH vor Version 6.5 nicht unterstützt. Ed25519-Schlüssel verwenden immer das neue private Schlüsselformat.

:!: HINWEIS - Die Option -o existierte in OpenSSH Versionen 6.5-7.7. Seit OpenSSH Version 7.8 ist das -o das Standardverhalten und die Option ist nicht mehr dokumentiert (wird einfach stillschweigend ignoriert, wenn sie benutzt wird).

:!: HINWEIS - In älteren Versionen würde ssh-keygen standardmäßig das PEM-Format für RSA-, DSA- und ECDSA-Schlüssel verwenden (nicht für Ed25519).

:!: HINWEIS - In OpenSSH Version 7.8 und neuer kann der Schlüssel im PEM-Format erhalten, indem Sie das -m PEM-Flag gesetzte wird.

Falls die Erstellung funktioniert hat, sollten nachfolgende Dateien in nachfolgendem Verzeichnis erstellt worden sein:

  • ~/.ssh („Home“-Verzeichnis des angemeldeten Benutzers - hier /home/klaus/.ssh)
$ ls -l ~/.ssh
total 8
-rw-------. 1 klaus klaus 464 Dec 22 07:05 id_ed25519
-rw-r--r--. 1 klaus klaus 100 Dec 22 07:05 id_ed25519.pub

Konfiguration

/etc/ansible/hosts

Die Konfigurationsdatei /etc/ansible/hosts enthält die via SSH zu erreichenden Server. Nachfolgende ein Beispiel für den Inhalt dieser Konfigurationsdatei und eine mögliche Ergänzung dieser, durch hinzufügen z.B. eigener IP-Adressen:

# cat /etc/ansible/hosts
# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups
 
# Ex 1: Ungrouped hosts, specify before any group headers.
 
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10
 
# Ex 2: A collection of hosts belonging to the 'webservers' group
 
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
 
# If you have multiple hosts following a pattern you can specify
# them like this:
 
## www[001:006].example.com
 
# Ex 3: A collection of database servers in the 'dbservers' group
 
## [dbservers]
## 
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
 
# Here's another example of host ranges, this time there are no
# leading 0s:
 
## db-[99:101]-node.example.com
 
# Tachtler
192.168.122.66
192.168.122.56

Als nächstes sollte überprüft werden ob ein SSH-Zugriff möglich ist, wobei auch gleich der SSH-Schlüssel des Servers überprüft und vor allem bestätigt werden kann, was mit nachfolgendem Befehlen erfolgen kann:

# ssh root@192.168.122.66
The authenticity of host '192.168.122.66 (192.168.122.66)' can't be established.
ECDSA key fingerprint is SHA256:PFyOCzDhZlr1dw1PAT9vJ6u4yt1bvxgWiqqYfVek9IA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.66' (ECDSA) to the list of known hosts.
root@192.168.122.66's password: 
Last login: Sun Dec 22 07:08:24 2019

und

# ssh root@192.168.122.56
The authenticity of host '192.168.122.56 (192.168.122.56)' can't be established.
ECDSA key fingerprint is SHA256:PFyOCzDhZlr1dw1PAT9vJ6u4yt1bvxgWiqqYfVek9IA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.56' (ECDSA) to the list of known hosts.
root@192.168.122.56's password: 
Last login: Sun Dec 22 07:09:56 2019

Durch Aufruf des nachfolgenden Befehls, kann überprüft werden, ob alle Server via SSH erreichbar sind:

# ansible all -m ping -u root --ask-pass
SSH password: 
192.168.122.66 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.122.56 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

Ein weiterer Test könnte wie nachfolgend gezeigt durchgeführt werden, um bestätigen zu können, das auch Befehle auf den entsprechenden Server ausgeführt werden können, wie nachfolgender Befehl zeigt:

# ansible all -a "/bin/echo hello" -u root --ask-pass
SSH password: 
192.168.122.66 | CHANGED | rc=0 >>
hello
 
192.168.122.56 | CHANGED | rc=0 >>
hello

:!: HINWEIS - Dies sind nur erste Tests, um die grundsätzlich Funktionalität von Ansible überprüfen zu können!

:!: ACHTUNG - In PRODuktiven Umgebungen sollte

  • KEIN Login mit dem root-Benutzer via SSH möglich sein!
  • KEINE Passwort Authentifizierung durchgeführt werden!
  • Die Nutzung von SSH-Schlüsseln sollte ein MUSS sein!

/etc/ansible/ansible.cfg

Die Konfigurationsdatei /etc/ansible/ansible.conf stallt die Hauptkonfigurationsdatei von Ansible dar. Nachfolgende Einstellungen erweitern die Standard Nutzungsmöglichkeiten von Ansible.

[privilege_escalation]

Um als nicht privilegierter Benutzer auch Aktionen durchführen zu können, welche root-Benutzer Berechtigungen voraussetzen, kann mit nachfolgender Anpassung der Konfigurationsddatei /etc/ansible/ansible.conf, bestimmt werden, ob für eine Aktion die root Berechtigungen erfodert,

  1. become=True - diese automatisch erlagt werden sollen
  2. become_method=sudo - welcher Befehl zur Rechteerlangung ausgeführt werden soll
  3. become_user=root - der Benutzer, dessen Rechte erlangt werden sollen
  4. become_ask_pass=True - ob nach einem Passwort gefragt werden soll

Nachfolgende Änderungen sind dafür durchzuführen.

(Nur relevanter Ausschnitt):

[privilege_escalation]
# Tachtler
# default: #become=True
# default: #become_method=sudo
# default: #become_user=root
# default: #become_ask_pass=False
become=True
become_method=sudo
become_user=root
become_ask_pass=True

Playbooks

Playbooks sind die Konfigurations-, Bereitstellungs- und Orchestrierungssprache von Ansible. Sie können eine Richtlinie beschreiben, die vom Remote-Systemen durchgesetzt werden soll, oder eine Reihe von Schritten in einem allgemeinen IT-Prozess sein.

Wenn Ansible-Module die Werkzeuge in einer Werkstatt sind, sind Playbooks die Bedienungsanleitungen, der Bestand an Hosts und das Rohmaterial zugleich.

Auf einer grundlegenden Ebene können Playbooks zur Verwaltung von Konfigurationen und Bereitstellungen auf Remote-Systemen verwendet werden. Auf einer fortgeschrittenen Ebene können mehrstufige Rollouts mit laufenden Updates sequenzieren und Aktionen an andere Hosts delegieren, wobei unterwegs mit Überwachungsservern und Load Balancern interagieren werden kann.

Playbooks sind so konzipiert, dass sie gut lesbar sind und werden in einer einfachen Textsprache YAML entwickelt.

*Quelle: https://docs.ansible.com/ansible/2.8/user_guide/playbooks.html

sudoers.yml

Nachfolgendes Playbook hat die Aufgabe folgende Konfigurationen durchzuführen:

  1. Für den Benutzer klaus
  2. überprüfen, ob eine Gruppe wheel existiert und
  3. optional - in einer neuen Datei /etc/sudoers.d/020_nopasswd_all_for_wheel den Eintrag %wheel ALL=(ALL) NOPASSWD: ALL vorhalten
  4. dies zu validieren und
  5. den Benutzer klaus zusätzlich in die Gruppe wheels aufzunehmen und
  6. den öffentlichen SSH-Schlüssel des Benutzer klaus nach /home/klaus/.ssh/ida_ed25519.pub bzw. den Inhalt exklusiv nach
  7. /home/klaus/.ssh/authorized_keys zu kopieren.

Erklärung

Um zukünftig zu vermeiden, das eine Login via SSH mit dem Benutzer root erfolgen muss, soll der Benutzer, hier klaus ebenfalls die Möglichkeit haben, sich via SSH auf die einzelnen Server zu verbinden.

Der Benutzer, hier klaus, soll sich auch durch Nutzung eines SSH-Schlüssels auf den jeweiligen Server verbinden können, um später in der Konfigurationsdatei des SSH-Daemons (Dienstes) dann die Möglichkeiten

  • ein Login via Benutzer root nicht mehr durchzuführen und
  • ein Login via Passwort-Authentifizierung, ebenfalls nicht mehr durchführen zu können

umzusetzen.

:!: 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.

:!: HINWEIS - Nachfolgend soll auch die Nutzung des SSH-Agents via ssh-add erfolgen, wie unter nachfolgendem externen Links aus der Dokumentation von zu entnehmen ist:

  • „Zitat“ - „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

Nachfolgend nun das Playbook, welches z.B. aktuell zur Vereinfachung im Verzeichnis

  • /etc/ansible

mit dem Namen

  • /etc/ansible/sudoers.yml

in der Programmiersprache YAML verfasst ist:

- hosts: all
  vars:
    sudoers:
      - klaus
  tasks:
    - name: Make sure we have a 'wheel' group
      group:
        name: wheel
        state: present
 
# Tachtler - optional -
#    - name: Allow 'wheel' group to have passwordless sudo
#      copy:
#        content: '%wheel ALL=(ALL) NOPASSWD: ALL'
#        dest: /etc/sudoers.d/020_nopasswd_all_for_wheel
#        owner: root
#        group: root
#        mode: "0440"     
#        validate: visudo -cf %s

    - name: Add sudoers users to 'wheel' group
      user:
        name: "{{ item }}"
        groups: wheel
        append: yes
      with_items: "{{ sudoers }}"

    - name: Set exclusive authorized key for sudoers taken from file
      authorized_key:
        user: "{{ item }}"
        key: "{{ lookup('file', '/home/{{ item }}/.ssh/id_ed25519.pub') }}"
        state: present
        exclusive: True
      with_items: "{{ sudoers }}"

Nachfolgende Ansible-Module kommen hier zum Einsatz:

Ausführung

Zur Ausführung, soll mit nachfolgendem Befehl in das Verzeichnis

  • /etc/ansible

gewechselt werden:

# cd /etc/ansible

Nachfolgender Befehl, rollt das Playbook /etc/ansible/sudoers.yml auf allen Servern aus:

# ansible-playbook -v sudoers.yml -u root --ask-pass
# ansible-playbook -v sudoers.yml -u root --ask-pass
Using /etc/ansible/ansible.cfg as config file
SSH password: 
 
PLAY [all] *********************************************************************
 
TASK [Gathering Facts] *********************************************************
ok: [192.168.122.66]
ok: [192.168.122.56]
 
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}
 
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}
 
TASK [Set exclusive authorized key for sudoers taken from file] ****************
changed: [192.168.122.66] => (item=klaus) => {"ansible_loop_var": "item", "changed": true, "comment": null, "exclusive": true, "follow": false, "item": "klaus", "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEjK0ugoSsSgnQ+F9hGh0+hd94vP6Pdu4IwcAnTCQ5Jo klaus@tachtler.net", "key_options": null, "keyfile": "/home/klaus/.ssh/authorized_keys", "manage_dir": true, "path": null, "state": "present", "user": "klaus", "validate_certs": true}
changed: [192.168.122.56] => (item=klaus) => {"ansible_loop_var": "item", "changed": true, "comment": null, "exclusive": true, "follow": false, "item": "klaus", "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEjK0ugoSsSgnQ+F9hGh0+hd94vP6Pdu4IwcAnTCQ5Jo klaus@tachtler.net", "key_options": null, "keyfile": "/home/klaus/.ssh/authorized_keys", "manage_dir": true, "path": null, "state": "present", "user": "klaus", "validate_certs": true}
 
PLAY RECAP *********************************************************************
192.168.122.56             : ok=4    changed=2    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

Erklärung:

  • ansible-playbook

Das ist das „Programm“, mit dem Playbooks ausgeführt werden können.

  • -v

Der Parameter -v ermöglicht die Ausgabe von erweiterten Informationen (verbose) währen der Ausführung.

  • sudoers.yml 

Das auszuführende Playbook

  • -u root

Der Parameter -u root bedingt die Ausführung unter dem Benutzer root, um sich mit diesen via SSH auf die einzelnen Server zu verbinden.

  • --ask-pass

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

Nach der Ausführung des Playbooks, sollten nachfolgend Schritte ausgeführt werden um überprüfen zu können, ob alles umgesetzt wurde, was in der vorhergehenden Liste mit diesem Playbook erreicht werden sollte.

Siehe auch dazu, den nachfolgenden internen Link: Ansible - Playbooks - sudoers.yml

Damit später keine Problem bei der Verbindung auf die einzelnen Server via SSH auftreten und weil Ansible nur bedingt während der Ausführung eines Playbook mit dem Nutzer interagieren kann, soll hier mit dem Benutzer klaus eine SSH-Verbindung (noch mit Passwort-Authentifizierung) auf jeden einzelnen Server durchgeführt werden, falls dies nicht bereits geschehen sein sollte, wie nachfolgende Befehle zeigen:

$ ssh klaus@192.168.122.66
The authenticity of host '192.168.122.66 (192.168.122.66)' can't be established.
ECDSA key fingerprint is SHA256:PFyOCzDhZlr1dw1PAT9vJ6u4yt1bvxgWiqqYfVek9IA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.66' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/klaus/.ssh/id_ed25519': 
Last login: Sun Dec 22 06:47:56 2019 from 192.168.122.1
$ ssh klaus@192.168.122.56
The authenticity of host '192.168.122.56 (192.168.122.56)' can't be established.
ECDSA key fingerprint is SHA256:PFyOCzDhZlr1dw1PAT9vJ6u4yt1bvxgWiqqYfVek9IA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.56' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/klaus/.ssh/id_ed25519': 
Last login: Sun Dec 22 06:48:09 2019 from 192.168.122.1

Nachfolgend soll auch die Nutzung des SSH-Agents via ssh-add erfolgen, wie unter nachfolgendem externen Links aus der Dokumentation von zu entnehmen ist:

  • „Zitat“ - „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.“
$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/klaus/.ssh/id_ed25519: 
Identity added: /home/klaus/.ssh/id_ed25519 (klaus@tachtler.net)

Um zu überprüfen, ob der SSH-Schlüssel auch im SSH-Agent geladen ist, kann nachfolgender Befehl verwendet werden:

$ ssh-add -l
256 SHA256:w8BZ2YNiOgyZUke3M6xMG1jp2drYwMzv/jiz0W9yOSk klaus@tachtler.net (ED25519)

Wenn der SSH-Schlüssel wieder aus dem SSH-Agent entladen werden soll, kann nachfolgender Befehl genutzt werden:

$ ssh-add -d ~/.ssh/id_ed25519
Identity removed: /home/klaus/.ssh/id_ed25519 (klaus@tachtler.net)

Wenn der SSH-Schlüssel nur für einen gewissen Zeitraum in den SSH-Agent geladen werden soll, kann nachfolgenden Befehl verwendet werden (hier eine Zeitspanne von 30 Minuten)

$ ssh-add -t 30m ~/.ssh/id_ed25519
Enter passphrase for /home/klaus/.ssh/id_ed25519: 
Identity added: /home/klaus/.ssh/id_ed25519 (klaus@tachtler.net)
Lifetime set to 1800 seconds

Abschließend können nun nachfolgende Befehle als angemeldeter Benutzer klaus ausgeführt werden,

  • ohne die Angabe und die Nutzung des Benutzer root - Parameter -u root
  • ohne die Angabe eines Passworts zur Verbindung via SSH - Parameter –ask-pass

:!: 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:

$ ansible all -m ping
BECOME password:
192.168.122.66 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.122.56 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

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:

$ ansible all -a "/bin/echo hello"
BECOME password: 
192.168.122.66 | CHANGED | rc=0 >>
hello
 
192.168.122.56 | CHANGED | rc=0 >>
hello

Ein Abschließender Test soll überprüfen, ob auch Befehle via SSH ausgeführt werden können, welche root-Benutzer Berechtigungen voraussetzen, wie nachfolgender Befehl zeigt:

$ ansible all -a "ls /root" --become --become-method sudo --become-user root --ask-become-pass
BECOME password: 
192.168.122.56 | CHANGED | rc=0 >>
anaconda-ks.cfg
 
192.168.122.66 | CHANGED | rc=0 >>
anaconda-ks.cfg

:!: HINWEIS - Wenn die Änderungen an der Konfigurationsdatei /etc/ansible/ansible.cfg wie in nachfolgenden internen Link beschrieben durchgeführt worden sind, können die Parameter

  • --become --become-method sudo --become-user root --ask-become-pass

auch weggelassen werden!

OHNE Änderung:

$ ansible all -a "ls /root"
192.168.122.66 | FAILED | rc=2 >>
ls: cannot open directory '/root': Permission deniednon-zero return code
 
192.168.122.56 | FAILED | rc=2 >>
ls: cannot open directory '/root': Permission deniednon-zero return code

MIT Änderung:

$ ansible all -a "ls /root"
BECOME password:
192.168.122.66 | CHANGED | rc=0 >>
anaconda-ks.cfg
 
192.168.122.56 | CHANGED | rc=0 >>
anaconda-ks.cfg
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/ansible.txt · Zuletzt geändert: 2020/03/27 08:16 von klaus