Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:archlinux_-_minimal_server_installation_-_mit_ansible

ArchLinux - Minimal Server Installation - mit Ansible

Die hier verwendete Installationsmethode ist eine Installation von einem ISO-Image/USB-Stick. Es kommt die einzige verfügbare Variante von ArchLinux in der Version 2020.01.01 zum Einsatz.

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.

Herunterladen

Die Installationsquellen, sprich die ISO-Datei, kann unter nachfolgend aufgelistetem Link heruntergeladen werden:

Als Beispiel-Quelle kann hier nachfolgender Link dienen:

Zum Herunterladen der DVD in das Zielverzeichnis /tmp, kann nachfolgender Befehl genutzt werden:

# wget https://www.archlinux.de/download/iso/2020.01.01/archlinux-2020.01.01-x86_64.iso -P /tmp

USB-Stick erstellen

Das ISO-Image kann mit nachfolgendem Befehl auf einen USB-Stick - hier /dev/sdb als startbereite Abbilddatei (bootable image) erstellt werden:

# dd bs=4M if=/tmp/archlinux-2020.01.01-x86_64.iso of=/dev/sdb && sync

Start: ISO-Image

Nach dem Einschalten des Servers, kann mit der Installation begonnen werden, in dem ein Start von dem sich auf dem USB-Stick befindlichen ArchLinux-ISO-Image in der Version 2020.01.01, durchgeführt wird.

BOOT

Falls dies erfolgreich realisiert werden konnte, sollte in etwa nachfolgender Bildschirm erscheinen:

ArchLinux - ISO - Boot

Durch drücken der [Eingabe|Return]-Taste auf dem Menüpunkt Boot Arch Linux (x86_64) wird ein initialer Start durchgeführt. Nach erfolgreichem Start des „Live“„-Images, sollte nachfolgender Bildschirm erscheinen.

:!: HINWEIS - Eine Anmeldung als Benutzer root ist bereits erfolgt!

Vorbereitungen

Um die folgenden Installationsschritte durchführen zu können, werden nachfolgende Gegebenheiten vorausgesetzt.

  1. Es besteht die Möglichkeit, eine Anbindung an das Internet zu konfigurieren

Tastaturlayout: deutsch

:!: ACHTUNG - Nach dem starten des ISO-Images wird ein US/Englisches-Tastaturlayout verwendet!

Damit alle nachfolgenden Eingabe unter Verwendung eines deutschen Tastaturlayouts durchgeführt werden können, ist nachfolgender Befehl auszuführen:

root@archiso ~ # loadkeys de-latin1-nodeadkeys
Der Buchstabe [y] befindet sich auf der englischen Tastatur auf der Taste [z].
Das Zeichen [-] befindet sich auf der englischen Tastatur auf der Taste [ß].

:!: HINWEIS - Anschließend sollte ein deutsches Tastaturlayout geladen sein!

Passwort: root

Damit später nachfolgende Konfigurationen durchgeführt werden können, soll eine Verbindung via SSH hergestellt werden.

Dazu ist es erforderlich, das der Benutzer root im „Live“-System ein Passwort besitzt, was mit nachfolgendem Befehl gesetzt werden kann:

root@archiso ~ # passwd
New password
Retype new password:
passwd: password updated successfully

Das Passwort ist in der shell hinter New password: einzugeben und mit der [Return/Enter]-Taste zu bestätigen. Anschließend ist der shell hinter Retype new password: das gleiche Passwort erneut einzugeben und ebenfalls mit der [Return/Enter]-Taste zu bestätigen.

Netzwerkkarte: manuelle Konfiguration

Nachfolgende Befehle sollen eine Verbindung mit einem bestehenden Netzwerk mit Internet-Zugang herstellen.

Zuerst sollte die Bezeichnung der Netzwerkkarte mit nachfolgendem Befehl ermittelt werden:

root@archiso ~ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:00:de:ad brd ff:ff:ff:ff:ff:ff
    inet6 fe80::baa6:bfbf:5fbd:1f6c/64 scope link 
       valid_lft forever preferred_lft forever

Die Bezeichnung der Netzwerkkarte in oben gezeigtem Beispiel lautet aktuell: ens3. In der gleichen Zeile ist auch zu sehen, das die Karte bereits den Status UP hat, also aktiv und nutzbar ist.

:!: HINWEIS - Falls die Netzwerkkarte nicht UP und damit aktiv sein sollte, kann mit nachfolgendem Befehl, die Karte mit der Bezeichnung ens3 aktiviert, sprich in den Status UP versetzt werden:

root@archiso ~ # ip link set up dev ens3

Die Zuweisung einer IPv4-Netzwerkadresse kann mit nachfolgendem Befehl durchgeführt werden:

root@archiso ~ # ip addr add 192.168.1.250/24 dev ens3

Ein Überprüfung, ob die IPv4-Netzwerkadresse für die Netzwerkkarte mit der Bezeichnung ens3 gesetzt wurde, kann mit nachfolgendem Befehl erfolgen:

root@archiso ~ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:00:de:ad brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::baa6:bfbf:5fbd:1f6c/64 scope link 
       valid_lft forever preferred_lft forever

Damit nun eine Verbindung nicht nur in das bereits aktuelle erreichbare Netzwerk möglich ist, sondern auch eine Standardroute - default-Route den Weg in Richtung Internet finden kann, ist die Konfiguration einer default-Route erforderlich, was mit nachfolgendem Befehl durchgeführt werden kann:

root@archiso ~ # ip route add default via 192.168.1.10

Eine Überprüfung mit nachfolgendem Befehl zeigt nun die aktuellen Routen, inklusive der default-Route an, welche auch in das Internet führen sollte:

root@archiso ~ # ip ro
default via 192.168.1.10 dev ens3
192.168.1.0/24 dev ens3 proto kernel scope link src 192.168.1.250

Ob die Verbindung zum Internet hergestellt wurde, kann mit nachfolgendem Test durch den nachfolgenden Befehl durchgeführt werden. Drei ping in Richtung eines Namensservers (DNS) von Google mit der IP-Adresse: 8.8.8.8, sollte nun möglich sein und eine Rückmeldung wie nachfolgende zurück liefern:

root@archiso ~ # ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8 icmp_seq=1 ttl=57 time=82.4 ms
64 bytes from 8.8.8.8 icmp_seq=2 ttl=57 time=95.3 ms
64 bytes from 8.8.8.8 icmp_seq=3 ttl=57 time=113 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 82.381/97.030/113.418/12.730 ms

Namensauflösung: /etc/resolv.conf

Damit nicht nur der Netzwerk technische Zugriff auf das Internet möglich ist, sondern auch eine Namensauflösung wie z.B. Google zu einer IP-Adresse möglich ist, ist es erforderlich, dass ein Namensserver konfiguriert wird, welche im Netzwerk oder aus dem Netzwerk erreichbar ist. Dies kann durch Ausführen des nachfolgenden Befehls durchgeführt werden:

root@archiso ~ # echo nameserver 192.168.1.20 >> /etc/resolv.conf

:!: HINWEIS - Falls kein eigener Namensserver zur Verfügung stehen sollte, wäre auch ein extern erreichbarer Nameserver wie der von Google ein ggf. kurzfristige Option, was durch Ausführung von nachfolgenden Befehlen ermöglicht werden könnte:

root@archiso ~ # echo nameserver 8.8.8.8 >> /etc/resolv.conf
root@archiso ~ # echo nameserver 8.8.4.4 >> /etc/resolv.conf

Mit nachfolgendem Befehl kann überprüft werden, ob die Ergänzung der Konfiguratiosndatei /etc/resolv.conf erfolgreich war:

root@archiso ~ # cat /etc/resolv.conf
# Resolver configuration file.
# See resolv.conf(5) for details.
nameserver 192.168.1.20

Ob die Namensauflösung Richtung Internet hergestellt wurde, kann mit nachfolgendem Test durch den nachfolgenden Befehl durchgeführt werden. Drei ping in Richtung von Google, sollte nun möglich sein und eine Rückmeldung wie nachfolgende zurück liefern:

root@archiso ~ # ping -c3 google.de
PING google.de (172.217.23.35) 56(84) bytes of data.
64 bytes from lhr35s02-in-f3.1e100.net (172.217.23.35): icmp_seq=1 ttl=57 time=23.5 ms
64 bytes from lhr35s02-in-f3.1e100.net (172.217.23.35): icmp_seq=1 ttl=57 time=25.0 ms
64 bytes from lhr35s02-in-f3.1e100.net (172.217.23.35): icmp_seq=1 ttl=57 time=22.9 ms

--- google.de ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2619ms
rtt min/avg/max/mdev = 22.853/23.799/25.031/0.911 ms

SSH-Dienst: starten

Damit eine Verbindung zum Server, welcher via „Live“-ISO-Image gestartet wurde, hergestellt werden kann, muss der bereits entsprechend vorkonfigurierte SSH-Dienst/Daemon mit nachfolgendem Befehl gestartet werden:

root@archiso ~ # systemctl start sshd.service

Eine Überprüfung ob der SSH-Dienst/Daemon auch ordnungsgemäß gestartet wurde, kann durch ausführen des nachfolgenden Befehls durchgeführt werden und sollte eine Ausgabe in etwa wie nachfolgende zur Folge haben:

root@archiso ~ # systemctl status sshd.service
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor prese>
   Active: active (running) since Sun 2020-01-10 08:28:08 UTC; 8s ago
 Main PID: 822 (sshd)
    Tasks: 1 (limit: 2332)
   Memory: 2.0M
   CGroup: /system.slice/sshd.service
           └─822 /usr/bin/sshd -D

Jan 10 08:28:08 archiso systemd[1]: Started OpenSSH Daemon.
Jan 10 08:28:08 archiso sshd[882]: Server listening on 0.0.0.0 port 22.
Jan 10 08:28:08 archiso sshd[882]: Server listening on :: port 22.

Verbindung: SSH-Login (root)

Jetzt kann eine erste Verbindung als Benutzer root via SSH-Login auf dem Server, welcher via „Live“-ISO-Image gestartet wurde, hergestellt werden. Nachfolgender Befehl soll dazu auf einer lokalen Workstation, nicht auf dem Server verwendet werden:

$ ssh root@192.168.1.250
The authenticity of host '192.168.1.250 (192.168.1.250)' can't be established.
ECDSA key fingerprint is SHA256:AizXWHnKF2FQHZxGpuPW8Wk/TG/NZYuzNbwLxmmGCOw.
ECDSA key fingerprint is MD5:a0:b5:24:1a:f5:84:81:14:b3:ec:2f:7c:3a:dd:1a:7f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.250' (ECDSA) to the list of known hosts.
root@192.168.1.250's password: 
Last login: Fri Jan 10 06:50:29 2020
root@archiso ~ #

Ansible

Installieren

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

Mit nachfolgendem Befehl, wird das Pakete ansible installiert:

# pacman --noconfirm -S ansible 
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]

Konfigurieren

Die Nutzung ​von Ansible ​basiert auf der nachfolgenden Installation,​ welche ​unter dem folgenden internen ​Link nachvollzogen werden kann:

/home/ansible/ansible/inventories/production/hosts

Damit die Installation auf jeweils nur einem zu installierendem Host bzw. Server statt finden kann, ist nachfolgende Anpassung der hosts-Konfigurationsdatei, hier

  • /home/ansible/ansible/inventories/production/hosts

von Ansible mindestens erforderlich, wie nachfolgende Beschreibung zeigt:

VORHER:

# BEGIN ANSIBLE MANAGED BLOCK
[ansible]
192.168.1.250
# END ANSIBLE MANAGED BLOCK

NACHHER:

[ansible]
192.168.1.250
 
[install]
192.168.1.10

* Wobei hier die IP-Adresse: 192.168.1.10 für den neu zu installierenden Server steht!

/home/ansible/ansible/archlinux-install.yml

Nachfolgende Konfiguration soll ein Playbook erstellen, um ArchLinux wie unter nachfolgendem internen Link zu installieren:

Das Playbook mit dem ArchLinux konfiguriert werden soll, soll in nachfolgendem Verzeichnis mit ebenfalls nachfolgendem Namen durch folgenden Befehl neu erstellt werden:

# vim /home/ansible/ansible/archlinux-install.yml

:!: WICHTIG - Die Variablen im Bereich - vars: - sollten den individuellen Gegebenheiten ggf. angepasst werden!

Nachfolgend das Playbook.

--- ### ArchLinux installation
  # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation
- hosts: install
 
  #
  ##############################################################################
  # >>> Please edit following lines for personal settings and custom usages. ! #
  ##############################################################################
  #

  vars:
    parted_device: vda
    parted_device_partition:
      - name: "partition1"
        number: 1
        flags: []
        start: 0%
        end: 1025MiB
      - name: "partition2"
        number: 2
        flags: [ lvm ]
        start: 1025MiB
        end: 100%
    parted_device_pv: 2
    parted_device_vg: archlinux
    parted_device_swap:
      - name: "swap"
        size: 2048
        type: "swap"
    parted_device_boot:
      - name: "boot"
        size: 1024
        type: "ext4"
        path: "/mnt/boot"
    # First "logical volume" MUST be root!
    parted_device_lv:
      - name: "root"
        size: 10240
        type: "ext4"
        path: "/mnt"
      - name: "home"
        size: 1024
        type: "ext4"
        path: "/mnt/home"
      - name: "var"
        size: 3072
        type: "ext4"
        path: "/mnt/var"
      - name: "var_log"
        size: 2048
        type: "ext4"
        path: "/mnt/var/log"
    # System environment setup
    mnt_hostname: archlinux
    mnt_lang: en_US.UTF-8
    # systemd-networkd.service configuration first interface
    mnt_ip: 192.168.1.11/24
    mnt_gateway: 192.168.1.1
    mnt_dns: 192.168.1.1
 
    #
    ##############################################################################
    # >>> Normaly there is no need to change anything below this comment line. ! #
    ##############################################################################
    #

  tasks:
    - name: Read device information from disk
      parted:
        device: "/dev/{{ parted_device }}"
        unit: MiB
      register: device_parted
 
      # 
      # Partitionierung fdisk
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#partitionierungfdisk
      #
    - name: Create partitions
      parted:
        device: "/dev/{{ parted_device }}"
        number: "{{ item.number }}"
        flags: "{{ item.flags }}"
        state: present
        part_start: "{{ item.start }}" 
        part_end: "{{ item.end }}"
      with_items: "{{ parted_device_partition }}"
 
      # 
      # LVM, Dateisysteme formatieren, Partitonen einhaengen
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#lvm
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#dateisysteme_formatieren
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#partitonen_einhaengen
      # 
    - name: Create a volume group on partition LVM 
      lvg:
        vg: "{{ parted_device_vg }}"
        pvs: "/dev/{{ parted_device }}{{ parted_device_pv }}"

    - name: Create swap volume
      lvol:
        vg: "{{ parted_device_vg }}"
        lv: "{{ item.name }}" 
        size: "{{ item.size }}"
      with_items: "{{ parted_device_swap }}"

    - name: Create logical volumes
      lvol:
        vg: "{{ parted_device_vg }}"
        lv: "{{ item.name }}" 
        size: "{{ item.size }}"
      with_items: "{{ parted_device_lv }}"

    - name: Make directory for mount point boot
      file:
        path: "{{ item.path }}"
        state: directory
      with_items: "{{ parted_device_boot }}"

    - name: Create a filesystem on each logical volume
      filesystem:
        fstype: "{{ item.type }}" 
        dev: "/dev/mapper/{{ parted_device_vg }}-{{ item.name }}"
      with_items: "{{ parted_device_lv }}"

    - name: Make directorys for mount points
      file:
        path: "{{ item.path }}"
        state: directory
      with_items: "{{ parted_device_lv }}"

    - name: Mount each logical volume
      mount:
        src: "/dev/mapper/{{ parted_device_vg }}-{{ item.name }}"
        path: "{{ item.path }}"
        fstype: "{{ item.type }}"
        state: mounted
      with_items: "{{ parted_device_lv }}"

    - name: Make directorys for nested mount points
      file:
        path: "{{ item.path }}"
        state: directory
      with_items: "{{ parted_device_lv }}"

    - name: Mount each nested logical volume
      mount:
        src: "/dev/mapper/{{ parted_device_vg }}-{{ item.name }}"
        path: "{{ item.path }}"
        fstype: "{{ item.type }}"
        state: mounted
      with_items: "{{ parted_device_lv }}"

    - name: Create a filesystem on boot volume
      filesystem:
        fstype: "{{ item.type }}" 
        dev: "/dev/{{ parted_device }}1"
      with_items: "{{ parted_device_boot }}"

    - name: Mount boot logical volume
      mount:
        src: "/dev/{{ parted_device }}1"
        path: "{{ item.path }}"
        fstype: "{{ item.type }}"
        state: mounted
      with_items: "{{ parted_device_boot }}"

    - name: Create a filesystem on swap volume
      filesystem:
        fstype: "{{ item.type }}" 
        dev: "/dev/mapper/{{ parted_device_vg }}-{{ item.name }}"
      with_items: "{{ parted_device_swap }}"

    - name: Swapon swap device
      command: "swapon /dev/mapper/{{ parted_device_vg }}-{{ item.name }}"
      with_items: "{{ parted_device_swap }}"
 
      # 
      # Installation Basissystem
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#installationbasissystem
      #
 
      # 
      # /etc/pacman.d/mirrorlist
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_pacmand_mirrorlist
      #
    - name: Check if file NOT exists - /etc/pacman.d/mirrorlist.orig
      stat: 
        path: /etc/pacman.d/mirrorlist.orig
      register: mirrorlist_orig
 
    - name: Copy /etc/pacman.d/mirrorlist to /etc/pacman.d/mirrorlist.orig
      copy:
        src: /etc/pacman.d/mirrorlist
        dest: /etc/pacman.d/mirrorlist.orig
        remote_src: yes
      when: mirrorlist_orig.stat.exists == false
     
    - name: Generate German Mirrorlist for pacman
      shell: grep -E -A 1 ".*Germany.*$" /etc/pacman.d/mirrorlist.orig | sed "/--/d" > /etc/pacman.d/mirrorlist
 
      # 
      # Basissystem /mnt
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#basissystemmnt
      #
    - name: Generate Basissystem with pacstrap (This may take some time!)
      command: pacstrap /mnt base base-devel linux-lts linux-firmware lvm2 openssh sshpass vi vim python
      register: pacstrap

    - debug:
        msg: >-
          { "stdout": {{ pacstrap.stdout_lines }},
            "stderr": {{ pacstrap.stderr.splitlines() }} }
 
      # 
      # Systemkonfiguration /mnt
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#systemkonfigurationmnt
      #
 
      # 
      # /etc/fstab erstellen
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_fstab_erstellen
      #
    - name: Generate /etc/fstab
      shell: genfstab -Up /mnt > /mnt/etc/fstab
 
      # 
      # /etc/hostname
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_hostname
      #
    - name: chroot - Set /etc/hostname
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          echo {{ mnt_hostname }} > /etc/hostname
          EOF
      args:
        executable: /bin/bash
 
      # 
      # /etc/locale.conf
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_localeconf
      #
    - name: chroot - Set /etc/locale.conf 
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          echo LANG={{ mnt_lang }} > /etc/locale.conf
          EOF
      args:
        executable: /bin/bash
 
      # 
      # /etc/locale.gen
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_localegen
      #
    - name: chroot - Changes to /etc/locale.gen
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          cp -a /etc/locale.gen /etc/locale.gen.orig
          sed -i '/#en_US*/s/^#//g' /etc/locale.gen
          locale-gen
          EOF
      args:
        executable: /bin/bash
      register: localegen 

    - debug:
        msg: >-
          { "stdout": {{ localegen.stdout_lines }},
            "stderr": {{ localegen.stderr.splitlines() }} }
 
      # 
      # /etc/vconsole.conf
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_vconsoleconf
      #
    - name: chroot - Set /etc/vconsole.conf 
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf
          echo FONT=lat9w-16 >> /etc/vconsole.conf
          EOF
      args:
        executable: /bin/bash
 
      # 
      # /etc/localtime
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_localtime
      #
    - name: chroot - Set /etc/localtime
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
          EOF
      args:
        executable: /bin/bash
 
      # 
      # /etc/hosts
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_hosts
      #
    - name: chroot - Set /etc/hosts
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          cat > /etc/hosts <<INEOF
          #<ip-address> <hostname.domain.tld>   <hostname>
          127.0.0.1     localhost.localdomain   localhost
          ::1           localhost.localdomain   localhost
          INEOF
          EOF
      args:
        executable: /bin/bash
 
      # 
      # /etc/mkinitcpio.conf
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#etc_mkinitcpioconf
      #
    - name: chroot - Set /etc/mkinitcpio.conf
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          cp -a /etc/mkinitcpio.conf /etc/mkinitcpio.conf.orig
          sed -i 's/block\ filesystem/block\ lvm2\ filesystem/g' /etc/mkinitcpio.conf
          mkinitcpio -p linux-lts
          EOF
      args:
        executable: /bin/bash
      register: mkinitcpio 

    - debug:
        msg: >-
          { "stdout": {{ mkinitcpio.stdout_lines }},
            "stderr": {{ mkinitcpio.stderr.splitlines() }} }
 
      # 
      # Bootloader GRUB
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#bootloadergrub
      #
    - name: chroot - Install and configure Bootloader - GRUB
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          pacman -S grub --noconfirm
          grub-install "/dev/{{ parted_device }}"
          sed -i 's/quiet/net\.ifnames=0/g' /etc/default/grub
          grub-mkconfig -o /boot/grub/grub.cfg 
          EOF
      args:
        executable: /bin/bash
      register: grub

    - debug:
        msg: >-
          { "stdout": {{ grub.stdout_lines }},
            "stderr": {{ grub.stderr.splitlines() }} }
 
      # 
      # passwd root
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#passwortroot1
      #
    - name: chroot - Set a default passwd for the root user (toor)
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          echo "root:toor" | chpasswd
          EOF
      args:
        executable: /bin/bash
 
      #
      # Netzwerk systemd
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#netzwerksystemd
      #
    - name: Create /mnt/etc/systemd/networkd/eth0.network
      shell: 
        cmd: |
          cat > /mnt/etc/systemd/network/eth0.network <<EOF
          [Match]
          Name=eth0
 
          [Network]
          Address={{ mnt_ip }}
          Gateway={{ mnt_gateway }}
          DNS={{ mnt_dns }}
          EOF
      args:
        executable: /bin/bash

    - name: chroot - Enable systemd-networkd.service
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          systemctl enable systemd-networkd.service
          EOF
      args:
        executable: /bin/bash

    - name: Update /mnt/etc/resolv.conf
      shell: 
        cmd: |
          cat >> /mnt/etc/resolv.conf <<EOF
          nameserver {{ mnt_dns }}
          EOF
      args:
        executable: /bin/bash
 
      #
      # SSH-Dienst/Deamon einrichten
      # https://dokuwiki.tachtler.net/doku.php?id=tachtler:archlinux_-_minimal_server_installation#ssh-dienst_deamon_einrichten
      #
    - name: Check if file NOT exists - /mnt/etc/sshd/sshd.config.orig
      stat: 
        path: /mnt//etc/ssh/sshd_config.orig
      register: sshd_config_orig
 
    - name: Copy /mnt/etc/sshd/sshd_config to /etc/ssh/sshd_config.orig
      copy:
        src: /mnt/etc/ssh/sshd_config
        dest: /mnt/etc/ssh/sshd_config.orig
        remote_src: yes
      when: sshd_config_orig.stat.exists == false

    - name: Change configuration of /mnt/etc/ssh/sshd_config
      lineinfile:
        line: "{{ item.line }}"
        path: "/mnt/etc/ssh/sshd_config"
        regexp: "{{ item.regexp }}"
        state: present 
      with_items:
        - { regexp: "^#PermitRootLogin\ prohibit-password", line: "# Tachtler\n# default: #PermitRootLogin prohibit-password\nPermitRootLogin yes" }
        - { regexp: "^#PasswordAuthentication yes", line: "# Tachtler\n# default: #PasswordAuthentication yes\nPasswordAuthentication yes" }

    - name: chroot - Enable sshd.service
      shell: 
        cmd: |
          arch-chroot /mnt <<EOF
          systemctl enable sshd.service
          EOF
      args:
        executable: /bin/bash

Playbook

Benutzer: ansible

Zuerst muss auf den Benutzer gewechselt werden, welcher das Playbook ausführen soll. Hier wäre dies der Benutzer ansible aus der vorangegangenen Ansible-Installation, wie unter nachfolgendem internen Link beschrieben:

Nachfolgender Befehl fürt den Wechsel auf den Benutzer, hier, ansible aus:

# su - ansible

Verbindungstest

Bevor das eigentliche Playbook ausgeführt werden kann, muss ein Verbindungstest ausgeführt werden, um

  1. die Verbindung zu testen
  2. den Host-Key, für die SSH-Verbindung in der ~/.ssh/known_hosts zu hinterlegen

was mit nachfolgendem Befehl durchgeführt werden kann:

$ ssh root@192.168.1.10
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
ECDSA key fingerprint is SHA256:Lwt+NpXV/fd/iS4ea9TY/LJYfOVBoQjBGBvyite/P/I.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.10' (ECDSA) to the list of known hosts.
root@192.168.1.10's password: 
Last login: Sat Feb  1 05:46:53 2020
root@archiso ~ #

* Wobei hier die IP-Adresse: 192.168.1.10 für den neu zu installierenden Server steht!

Zum Verlassen des Hosts, kann hier der nachfolgende Befehl genutzt werden:

root@archiso ~ # exit
Connection to 192.168.1.10 closed.

Playbook überprüfen

Nachfolgender Befehl führt eine detaillierte Überprüfung des angegeben Playbook durch:

$ ansible-playbook --syntax-check /home/ansible/ansible/archlinux-install.yml

playbook: /home/ansible/ansible/archlinux-install.yml

Playbook ausführen

Nachfolgender Befehl für das Playbook, welches unter /home/ansible/ansible/archlinux-install.yml gespeichert sein sollte aus:

:!: WICHTIG - Hier MUSS der Benutzer root und dessen Passwort auf dem neu zu installierendem Server verwendet werden!

$ ansible-playbook -u root --ask-pass /home/ansible/ansible/archlinux-install.yml

$ ansible-playbook -u root --ask-pass /home/ansible/ansible/archlinux-install.yml
SSH password: 
BECOME password[defaults to SSH password]: 
 
PLAY [install] *****************************************************************
 
TASK [Gathering Facts] *********************************************************
ok: [192.168.1.10]
 
TASK [Read device information from disk] ***************************************
ok: [192.168.1.10]
 
TASK [Create partitions] *******************************************************
changed: [192.168.1.10] => (item={'name': 'partition1', 'number': 1, 'flags': [], 'start': '0%', 'end': '1025MiB'})
changed: [192.168.1.10] => (item={'name': 'partition2', 'number': 2, 'flags': ['lvm'], 'start': '1025MiB', 'end': '100%'})
 
TASK [Create a volume group on partition LVM] **********************************
changed: [192.168.1.10]
 
TASK [Create swap volume] ******************************************************
changed: [192.168.1.10] => (item={'name': 'swap', 'size': 2048, 'type': 'swap'})
 
TASK [Create logical volumes] **************************************************
changed: [192.168.1.10] => (item={'name': 'root', 'size': 10240, 'type': 'ext4', 'path': '/mnt'})
changed: [192.168.1.10] => (item={'name': 'home', 'size': 1024, 'type': 'ext4', 'path': '/mnt/home'})
changed: [192.168.1.10] => (item={'name': 'var', 'size': 3072, 'type': 'ext4', 'path': '/mnt/var'})
changed: [192.168.1.10] => (item={'name': 'var_log', 'size': 2048, 'type': 'ext4', 'path': '/mnt/var/log'})
 
TASK [Make directory for mount point boot] *************************************
changed: [192.168.1.10] => (item={'name': 'boot', 'size': 1024, 'type': 'ext4', 'path': '/mnt/boot'})
 
TASK [Create a filesystem on each logical volume] ******************************
changed: [192.168.1.10] => (item={'name': 'root', 'size': 10240, 'type': 'ext4', 'path': '/mnt'})
changed: [192.168.1.10] => (item={'name': 'home', 'size': 1024, 'type': 'ext4', 'path': '/mnt/home'})
changed: [192.168.1.10] => (item={'name': 'var', 'size': 3072, 'type': 'ext4', 'path': '/mnt/var'})
changed: [192.168.1.10] => (item={'name': 'var_log', 'size': 2048, 'type': 'ext4', 'path': '/mnt/var/log'})
 
TASK [Make directorys for mount points] ****************************************
ok: [192.168.1.10] => (item={'name': 'root', 'size': 10240, 'type': 'ext4', 'path': '/mnt'})
changed: [192.168.1.10] => (item={'name': 'home', 'size': 1024, 'type': 'ext4', 'path': '/mnt/home'})
changed: [192.168.1.10] => (item={'name': 'var', 'size': 3072, 'type': 'ext4', 'path': '/mnt/var'})
changed: [192.168.1.10] => (item={'name': 'var_log', 'size': 2048, 'type': 'ext4', 'path': '/mnt/var/log'})
 
TASK [Mount each logical volume] ***********************************************
changed: [192.168.1.10] => (item={'name': 'root', 'size': 10240, 'type': 'ext4', 'path': '/mnt'})
changed: [192.168.1.10] => (item={'name': 'home', 'size': 1024, 'type': 'ext4', 'path': '/mnt/home'})
changed: [192.168.1.10] => (item={'name': 'var', 'size': 3072, 'type': 'ext4', 'path': '/mnt/var'})
changed: [192.168.1.10] => (item={'name': 'var_log', 'size': 2048, 'type': 'ext4', 'path': '/mnt/var/log'})
 
TASK [Make directorys for nested mount points] *********************************
ok: [192.168.1.10] => (item={'name': 'root', 'size': 10240, 'type': 'ext4', 'path': '/mnt'})
ok: [192.168.1.10] => (item={'name': 'home', 'size': 1024, 'type': 'ext4', 'path': '/mnt/home'})
ok: [192.168.1.10] => (item={'name': 'var', 'size': 3072, 'type': 'ext4', 'path': '/mnt/var'})
ok: [192.168.1.10] => (item={'name': 'var_log', 'size': 2048, 'type': 'ext4', 'path': '/mnt/var/log'})
 
TASK [Mount each nested logical volume] ****************************************
ok: [192.168.1.10] => (item={'name': 'root', 'size': 10240, 'type': 'ext4', 'path': '/mnt'})
ok: [192.168.1.10] => (item={'name': 'home', 'size': 1024, 'type': 'ext4', 'path': '/mnt/home'})
ok: [192.168.1.10] => (item={'name': 'var', 'size': 3072, 'type': 'ext4', 'path': '/mnt/var'})
ok: [192.168.1.10] => (item={'name': 'var_log', 'size': 2048, 'type': 'ext4', 'path': '/mnt/var/log'})
 
TASK [Create a filesystem on boot volume] **************************************
changed: [192.168.1.10] => (item={'name': 'boot', 'size': 1024, 'type': 'ext4', 'path': '/mnt/boot'})
 
TASK [Mount boot logical volume] ***********************************************
changed: [192.168.1.10] => (item={'name': 'boot', 'size': 1024, 'type': 'ext4', 'path': '/mnt/boot'})
 
TASK [Create a filesystem on swap volume] **************************************
changed: [192.168.1.10] => (item={'name': 'swap', 'size': 2048, 'type': 'swap'})
 
TASK [Swapon swap device] ******************************************************
changed: [192.168.1.10] => (item={'name': 'swap', 'size': 2048, 'type': 'swap'})
 
TASK [Check if file NOT exists - /etc/pacman.d/mirrorlist.orig] ****************
ok: [192.168.1.10]
 
TASK [Copy /etc/pacman.d/mirrorlist to /etc/pacman.d/mirrorlist.orig] **********
changed: [192.168.1.10]
 
TASK [Generate German Mirrorlist for pacman] ***********************************
changed: [192.168.1.10]
 
TASK [Generate Basissystem with pacstrap (This may take some time!)] ***********
changed: [192.168.1.10]
 
TASK [debug] *******************************************************************
ok: [192.168.1.10] => {
    "msg": {
        "stderr": [],
        "stdout": [
            "==> Creating install root at /mnt",
            "==> Installing packages to /mnt",
            ":: Synchronizing package databases...",
            "downloading core.db...",
            "downloading extra.db...",
            "downloading community.db...",
            ":: There are 24 members in group base-devel:",
            ":: Repository core",
            "   1) autoconf  2) automake  3) binutils  4) bison  5) fakeroot  6) file  7) findutils  8) flex  9) gawk  10) gcc  11) gettext  12) grep  13) groff  14) gzip  15) libtool  16) m4  17) make  18) pacman  19) patch  20) pkgconf  21) sed  22) sudo  23) texinfo  24) which",
            "",
            "Enter a selection (default=all): ",
            "resolving dependencies...",
            ":: There are 2 providers available for initramfs:",
            ":: Repository core",
            "   1) mkinitcpio",
            ":: Repository extra",
            "   2) dracut",
            "",
            "Enter a number (default=1): ",
            "looking for conflicting packages...",
            "",
            "Packages (147) acl-2.2.53-2  archlinux-keyring-20200108-1  argon2-20190702-2  attr-2.4.48-2  audit-2.8.5-6  bash-5.0.011-2  bzip2-1.0.8-3  ca-certificates-20181109-3  ca-certificates-mozilla-3.49.2-3  ca-certificates-utils-20181109-3  coreutils-8.31-3  cracklib-2.9.7-2  cryptsetup-2.2.2-1  curl-7.68.0-1  db-5.3.28-5  dbus-1.12.16-5  device-mapper-2.02.186-5  diffutils-3.7-3  dnssec-anchors-20190629-2  e2fsprogs-1.45.5-1  expat-2.2.9-3  filesystem-2019.10-2  gc-8.0.4-3  gcc-libs-9.2.0-4  gdbm-1.18.1-3  glib2-2.62.4-1  glibc-2.30-3  gmp-6.1.2-3  gnupg-2.2.19-1  gnutls-3.6.11.1-1  gpgme-1.13.1-3  gpm-1.20.7.r27.g1fd1941-2  guile-2.2.6-1  hwids-20191025-2  iana-etc-20191231-1  icu-65.1-2  iproute2-5.5.0-1  iptables-1:1.8.4-1  iputils-20190709-2  json-c-0.13.1-3  kbd-2.2.0-5  keyutils-1.6.1-3  kmod-26-3  krb5-1.17.1-1  ldns-1.7.1-2  less-551-3  libaio-0.3.112-2  libarchive-3.4.1-1  libassuan-2.5.3-2  libcap-2.30-1  libcap-ng-0.7.10-1  libcroco-0.6.13-1  libedit-20191231_3.1-1  libelf-0.177-2  libffi-3.2.1-4  libgcrypt-1.8.5-2  libgpg-error-1.36-3  libidn2-2.3.0-1  libksba-1.3.5-2  libldap-2.4.48-2  libmnl-1.0.4-3  libmpc-1.1.0-2  libnetfilter_conntrack-1.0.7-1  libnfnetlink-1.0.1-3  libnftnl-1.1.5-1  libnghttp2-1.39.2-2  libnl-3.5.0-2  libpcap-1.9.1-2  libpsl-0.21.0-2  libsasl-2.1.27-2  libseccomp-2.4.1-3  libsecret-0.20.0-1  libssh2-1.9.0-2  libtasn1-4.15.0-1  libtirpc-1.2.5-1  libunistring-0.9.10-2  libusb-1.0.23-2  libutil-linux-2.35-1  libxml2-2.9.10-1  licenses-20191011-2  linux-api-headers-5.3.1-2  lz4-1:1.9.2-2  mkinitcpio-27-2  mkinitcpio-busybox-1.31.1-1  mpfr-4.0.2-2  ncurses-6.1-7  nettle-3.5.1-2  npth-1.6-2  openssl-1.1.1.d-2  p11-kit-0.23.20-2  pacman-mirrorlist-20200103-1  pam-1.3.1-2  pambase-20190105.1-2  pciutils-3.6.2-2  pcre-8.43-2  pcre2-10.34-3  perl-5.30.1-1  pinentry-1.1.0-5  popt-1.16-12  procps-ng-3.3.15-2  psmisc-23.3-2  readline-8.0.001-2  shadow-4.8-1  sqlite-3.31.1-1  systemd-244.1-1  systemd-libs-244.1-1  systemd-sysvcompat-244.1-1  tar-1.32-3  thin-provisioning-tools-0.8.5-3  tzdata-2019c-3  util-linux-2.35-1  vim-runtime-8.2.0148-1  xz-5.2.4-2  zlib-1:1.2.11-4  zstd-1.4.4-1  autoconf-2.69-6  automake-1.16.1-2  base-2-2  binutils-2.33.1-2  bison-3.5-1  fakeroot-1.24-2  file-5.38-3  findutils-4.7.0-2  flex-2.6.4-3  gawk-5.0.1-2  gcc-9.2.0-4  gettext-0.20.1-3  grep-3.4-1  groff-1.22.4-3  gzip-1.10-3  libtool-2.4.6+42+gb88cebd5-8  linux-firmware-20191220.6871bff-1  linux-lts-4.19.99-1  lvm2-2.02.186-5  m4-1.4.18-3  make-4.2.1-4  openssh-8.1p1-2  pacman-5.2.1-4  patch-2.7.6-8  pkgconf-1.6.3-3  sed-4.8-1  sshpass-1.06-2  sudo-1.8.30-1  texinfo-6.7-2  vi-1:070224-4  vim-8.2.0148-1  which-2.21-5",
            "",
            "Total Download Size:    339.29 MiB",
            "Total Installed Size:  1420.07 MiB",
            "",
            ":: Proceed with installation? [Y/n] ",
            ":: Retrieving packages...",
            "downloading iana-etc-20191231-1-any.pkg.tar.zst...",
            "downloading filesystem-2019.10-2-x86_64.pkg.tar.xz...",
            "downloading linux-api-headers-5.3.1-2-any.pkg.tar.xz...",
            "downloading tzdata-2019c-3-x86_64.pkg.tar.xz...",
            "downloading glibc-2.30-3-x86_64.pkg.tar.xz...",
            "downloading gcc-libs-9.2.0-4-x86_64.pkg.tar.xz...",
            "downloading ncurses-6.1-7-x86_64.pkg.tar.xz...",
            "downloading readline-8.0.001-2-x86_64.pkg.tar.xz...",
            "downloading bash-5.0.011-2-x86_64.pkg.tar.xz...",
            "downloading attr-2.4.48-2-x86_64.pkg.tar.xz...",
            "downloading acl-2.2.53-2-x86_64.pkg.tar.xz...",
            "downloading gmp-6.1.2-3-x86_64.pkg.tar.xz...",
            "downloading libcap-2.30-1-x86_64.pkg.tar.zst...",
            "downloading gdbm-1.18.1-3-x86_64.pkg.tar.xz...",
            "downloading db-5.3.28-5-x86_64.pkg.tar.xz...",
            "downloading perl-5.30.1-1-x86_64.pkg.tar.xz...",
            "downloading openssl-1.1.1.d-2-x86_64.pkg.tar.xz...",
            "downloading coreutils-8.31-3-x86_64.pkg.tar.xz...",
            "downloading zlib-1:1.2.11-4-x86_64.pkg.tar.xz...",
            "downloading xz-5.2.4-2-x86_64.pkg.tar.xz...",
            "downloading bzip2-1.0.8-3-x86_64.pkg.tar.xz...",
            "downloading libseccomp-2.4.1-3-x86_64.pkg.tar.xz...",
            "downloading file-5.38-3-x86_64.pkg.tar.zst...",
            "downloading findutils-4.7.0-2-x86_64.pkg.tar.xz...",
            "downloading mpfr-4.0.2-2-x86_64.pkg.tar.xz...",
            "downloading gawk-5.0.1-2-x86_64.pkg.tar.xz...",
            "downloading pcre-8.43-2-x86_64.pkg.tar.xz...",
            "downloading grep-3.4-1-x86_64.pkg.tar.zst...",
            "downloading libgpg-error-1.36-3-x86_64.pkg.tar.xz...",
            "downloading libgcrypt-1.8.5-2-x86_64.pkg.tar.xz...",
            "downloading lz4-1:1.9.2-2-x86_64.pkg.tar.xz...",
            "downloading systemd-libs-244.1-1-x86_64.pkg.tar.xz...",
            "downloading procps-ng-3.3.15-2-x86_64.pkg.tar.xz...",
            "downloading sed-4.8-1-x86_64.pkg.tar.zst...",
            "downloading tar-1.32-3-x86_64.pkg.tar.xz...",
            "downloading libffi-3.2.1-4-x86_64.pkg.tar.xz...",
            "downloading libutil-linux-2.35-1-x86_64.pkg.tar.zst...",
            "downloading glib2-2.62.4-1-x86_64.pkg.tar.xz...",
            "downloading libunistring-0.9.10-2-x86_64.pkg.tar.xz...",
            "downloading icu-65.1-2-x86_64.pkg.tar.xz...",
            "downloading gettext-0.20.1-3-x86_64.pkg.tar.xz...",
            "downloading hwids-20191025-2-any.pkg.tar.xz...",
            "downloading kmod-26-3-x86_64.pkg.tar.xz...",
            "downloading pciutils-3.6.2-2-x86_64.pkg.tar.xz...",
            "downloading psmisc-23.3-2-x86_64.pkg.tar.xz...",
            "downloading cracklib-2.9.7-2-x86_64.pkg.tar.xz...",
            "downloading e2fsprogs-1.45.5-1-x86_64.pkg.tar.zst...",
            "downloading libsasl-2.1.27-2-x86_64.pkg.tar.xz...",
            "downloading libldap-2.4.48-2-x86_64.pkg.tar.xz...",
            "downloading keyutils-1.6.1-3-x86_64.pkg.tar.xz...",
            "downloading krb5-1.17.1-1-x86_64.pkg.tar.zst...",
            "downloading libtirpc-1.2.5-1-x86_64.pkg.tar.xz...",
            "downloading pambase-20190105.1-2-any.pkg.tar.xz...",
            "downloading pam-1.3.1-2-x86_64.pkg.tar.xz...",
            "downloading libcap-ng-0.7.10-1-x86_64.pkg.tar.xz...",
            "downloading audit-2.8.5-6-x86_64.pkg.tar.xz...",
            "downloading shadow-4.8-1-x86_64.pkg.tar.xz...",
            "downloading util-linux-2.35-1-x86_64.pkg.tar.zst...",
            "downloading less-551-3-x86_64.pkg.tar.xz...",
            "downloading gzip-1.10-3-x86_64.pkg.tar.xz...",
            "downloading licenses-20191011-2-any.pkg.tar.xz...",
            "downloading expat-2.2.9-3-x86_64.pkg.tar.xz...",
            "downloading zstd-1.4.4-1-x86_64.pkg.tar.xz...",
            "downloading libarchive-3.4.1-1-x86_64.pkg.tar.zst...",
            "downloading libtasn1-4.15.0-1-x86_64.pkg.tar.xz...",
            "downloading device-mapper-2.02.186-5-x86_64.pkg.tar.zst...",
            "downloading popt-1.16-12-x86_64.pkg.tar.xz...",
            "downloading json-c-0.13.1-3-x86_64.pkg.tar.xz...",
            "downloading argon2-20190702-2-x86_64.pkg.tar.xz...",
            "downloading cryptsetup-2.2.2-1-x86_64.pkg.tar.xz...",
            "downloading dbus-1.12.16-5-x86_64.pkg.tar.zst...",
            "downloading libmnl-1.0.4-3-x86_64.pkg.tar.xz...",
            "downloading libnftnl-1.1.5-1-x86_64.pkg.tar.xz...",
            "downloading libnl-3.5.0-2-x86_64.pkg.tar.xz...",
            "downloading libusb-1.0.23-2-x86_64.pkg.tar.xz...",
            "downloading libpcap-1.9.1-2-x86_64.pkg.tar.xz...",
            "downloading iptables-1:1.8.4-1-x86_64.pkg.tar.zst...",
            "downloading kbd-2.2.0-5-x86_64.pkg.tar.xz...",
            "downloading libidn2-2.3.0-1-x86_64.pkg.tar.xz...",
            "downloading libelf-0.177-2-x86_64.pkg.tar.xz...",
            "downloading pcre2-10.34-3-x86_64.pkg.tar.xz...",
            "downloading systemd-244.1-1-x86_64.pkg.tar.xz...",
            "downloading p11-kit-0.23.20-2-x86_64.pkg.tar.zst...",
            "downloading ca-certificates-utils-20181109-3-any.pkg.tar.zst...",
            "downloading ca-certificates-mozilla-3.49.2-3-x86_64.pkg.tar.zst...",
            "downloading ca-certificates-20181109-3-any.pkg.tar.zst...",
            "downloading libssh2-1.9.0-2-x86_64.pkg.tar.xz...",
            "downloading libpsl-0.21.0-2-x86_64.pkg.tar.xz...",
            "downloading libnghttp2-1.39.2-2-x86_64.pkg.tar.xz...",
            "downloading curl-7.68.0-1-x86_64.pkg.tar.zst...",
            "downloading npth-1.6-2-x86_64.pkg.tar.xz...",
            "downloading libksba-1.3.5-2-x86_64.pkg.tar.xz...",
            "downloading libassuan-2.5.3-2-x86_64.pkg.tar.xz...",
            "downloading libsecret-0.20.0-1-x86_64.pkg.tar.zst...",
            "downloading pinentry-1.1.0-5-x86_64.pkg.tar.xz...",
            "downloading nettle-3.5.1-2-x86_64.pkg.tar.xz...",
            "downloading gnutls-3.6.11.1-1-x86_64.pkg.tar.xz...",
            "downloading sqlite-3.31.1-1-x86_64.pkg.tar.zst...",
            "downloading gnupg-2.2.19-1-x86_64.pkg.tar.xz...",
            "downloading gpgme-1.13.1-3-x86_64.pkg.tar.xz...",
            "downloading pacman-mirrorlist-20200103-1-any.pkg.tar.xz...",
            "downloading archlinux-keyring-20200108-1-any.pkg.tar.zst...",
            "downloading pacman-5.2.1-4-x86_64.pkg.tar.zst...",
            "downloading systemd-sysvcompat-244.1-1-x86_64.pkg.tar.xz...",
            "downloading iputils-20190709-2-x86_64.pkg.tar.xz...",
            "downloading iproute2-5.5.0-1-x86_64.pkg.tar.zst...",
            "downloading base-2-2-any.pkg.tar.xz...",
            "downloading m4-1.4.18-3-x86_64.pkg.tar.xz...",
            "downloading diffutils-3.7-3-x86_64.pkg.tar.xz...",
            "downloading autoconf-2.69-6-any.pkg.tar.xz...",
            "downloading automake-1.16.1-2-any.pkg.tar.xz...",
            "downloading binutils-2.33.1-2-x86_64.pkg.tar.xz...",
            "downloading bison-3.5-1-x86_64.pkg.tar.xz...",
            "downloading fakeroot-1.24-2-x86_64.pkg.tar.xz...",
            "downloading flex-2.6.4-3-x86_64.pkg.tar.xz...",
            "downloading libmpc-1.1.0-2-x86_64.pkg.tar.xz...",
            "downloading gcc-9.2.0-4-x86_64.pkg.tar.xz...",
            "downloading groff-1.22.4-3-x86_64.pkg.tar.xz...",
            "downloading libtool-2.4.6+42+gb88cebd5-8-x86_64.pkg.tar.xz...",
            "downloading texinfo-6.7-2-x86_64.pkg.tar.xz...",
            "downloading make-4.2.1-4-x86_64.pkg.tar.xz...",
            "downloading patch-2.7.6-8-x86_64.pkg.tar.xz...",
            "downloading pkgconf-1.6.3-3-x86_64.pkg.tar.xz...",
            "downloading sudo-1.8.30-1-x86_64.pkg.tar.zst...",
            "downloading which-2.21-5-x86_64.pkg.tar.xz...",
            "downloading mkinitcpio-busybox-1.31.1-1-x86_64.pkg.tar.xz...",
            "downloading mkinitcpio-27-2-any.pkg.tar.xz...",
            "downloading linux-lts-4.19.99-1-x86_64.pkg.tar.zst...",
            "downloading linux-firmware-20191220.6871bff-1-any.pkg.tar.xz...",
            "downloading libaio-0.3.112-2-x86_64.pkg.tar.xz...",
            "downloading thin-provisioning-tools-0.8.5-3-x86_64.pkg.tar.xz...",
            "downloading lvm2-2.02.186-5-x86_64.pkg.tar.zst...",
            "downloading libedit-20191231_3.1-1-x86_64.pkg.tar.zst...",
            "downloading dnssec-anchors-20190629-2-any.pkg.tar.xz...",
            "downloading ldns-1.7.1-2-x86_64.pkg.tar.xz...",
            "downloading openssh-8.1p1-2-x86_64.pkg.tar.xz...",
            "downloading vi-1:070224-4-x86_64.pkg.tar.xz...",
            "downloading gpm-1.20.7.r27.g1fd1941-2-x86_64.pkg.tar.xz...",
            "downloading libxml2-2.9.10-1-x86_64.pkg.tar.xz...",
            "downloading libcroco-0.6.13-1-x86_64.pkg.tar.xz...",
            "downloading libnfnetlink-1.0.1-3-x86_64.pkg.tar.xz...",
            "downloading libnetfilter_conntrack-1.0.7-1-x86_64.pkg.tar.xz...",
            "downloading gc-8.0.4-3-x86_64.pkg.tar.xz...",
            "downloading guile-2.2.6-1-x86_64.pkg.tar.xz...",
            "downloading vim-runtime-8.2.0148-1-x86_64.pkg.tar.zst...",
            "downloading vim-8.2.0148-1-x86_64.pkg.tar.zst...",
            "downloading sshpass-1.06-2-x86_64.pkg.tar.xz...",
            "checking keyring...",
            "checking package integrity...",
            "loading package files...",
            "checking for file conflicts...",
            ":: Processing package changes...",
            "installing iana-etc...",
            "installing filesystem...",
            "installing linux-api-headers...",
            "installing tzdata...",
            "installing glibc...",
            "Optional dependencies for glibc",
            "    gd: for memusagestat",
            "installing gcc-libs...",
            "installing ncurses...",
            "installing readline...",
            "installing bash...",
            "Optional dependencies for bash",
            "    bash-completion: for tab completion",
            "installing attr...",
            "installing acl...",
            "installing gmp...",
            "installing libcap...",
            "installing gdbm...",
            "installing db...",
            "installing perl...",
            "installing openssl...",
            "Optional dependencies for openssl",
            "    ca-certificates [pending]",
            "installing coreutils...",
            "installing zlib...",
            "installing xz...",
            "installing bzip2...",
            "installing libseccomp...",
            "installing file...",
            "installing findutils...",
            "installing mpfr...",
            "installing gawk...",
            "installing pcre...",
            "installing grep...",
            "installing libgpg-error...",
            "installing libgcrypt...",
            "installing lz4...",
            "installing systemd-libs...",
            "installing procps-ng...",
            "installing sed...",
            "installing tar...",
            "installing libffi...",
            "installing libutil-linux...",
            "installing glib2...",
            "Optional dependencies for glib2",
            "    python: gdbus-codegen, glib-genmarshal, glib-mkenums, gtester-report",
            "    libelf: gresource inspection tool [pending]",
            "installing libunistring...",
            "installing icu...",
            "installing libxml2...",
            "installing libcroco...",
            "installing gettext...",
            "Optional dependencies for gettext",
            "    git: for autopoint infrastructure updates",
            "installing hwids...",
            "installing kmod...",
            "installing pciutils...",
            "installing psmisc...",
            "installing cracklib...",
            "installing e2fsprogs...",
            "installing libsasl...",
            "installing libldap...",
            "installing keyutils...",
            "installing krb5...",
            "installing libtirpc...",
            "installing pambase...",
            "installing pam...",
            "installing libcap-ng...",
            "installing audit...",
            "installing shadow...",
            "installing util-linux...",
            "Optional dependencies for util-linux",
            "    python: python bindings to libmount",
            "    words: default dictionary for look",
            "installing less...",
            "installing gzip...",
            "installing licenses...",
            "installing expat...",
            "installing zstd...",
            "installing libarchive...",
            "installing libtasn1...",
            "installing device-mapper...",
            "installing popt...",
            "installing json-c...",
            "installing argon2...",
            "installing cryptsetup...",
            "installing dbus...",
            "installing libmnl...",
            "installing libnftnl...",
            "installing libnl...",
            "installing libusb...",
            "installing libpcap...",
            "installing libnfnetlink...",
            "installing libnetfilter_conntrack...",
            "installing iptables...",
            "installing kbd...",
            "installing libidn2...",
            "installing libelf...",
            "installing pcre2...",
            "installing systemd...",
            "Initializing machine ID from KVM UUID.",
            "Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.",
            "Created symlink /etc/systemd/system/multi-user.target.wants/remote-fs.target → /usr/lib/systemd/system/remote-fs.target.",
            ":: Append 'init=/usr/lib/systemd/systemd' to your kernel command line in your",
            "   bootloader to replace sysvinit with systemd, or install systemd-sysvcompat",
            "Optional dependencies for systemd",
            "    libmicrohttpd: remote journald capabilities",
            "    quota-tools: kernel-level quota management",
            "    systemd-sysvcompat: symlink package to provide sysvinit binaries [pending]",
            "    polkit: allow administration as unprivileged user",
            "    curl: machinectl pull-tar and pull-raw [pending]",
            "installing p11-kit...",
            "Created symlink /etc/systemd/user/sockets.target.wants/p11-kit-server.socket → /usr/lib/systemd/user/p11-kit-server.socket.",
            "installing ca-certificates-utils...",
            "installing ca-certificates-mozilla...",
            "installing ca-certificates...",
            "installing libssh2...",
            "installing libpsl...",
            "installing libnghttp2...",
            "installing curl...",
            "installing npth...",
            "installing libksba...",
            "installing libassuan...",
            "installing libsecret...",
            "Optional dependencies for libsecret",
            "    org.freedesktop.secrets: secret storage backend",
            "installing pinentry...",
            "Optional dependencies for pinentry",
            "    gtk2: gtk2 backend",
            "    qt5-base: qt backend",
            "    gcr: gnome3 backend",
            "installing nettle...",
            "installing gnutls...",
            "Optional dependencies for gnutls",
            "    guile: for use with Guile bindings [pending]",
            "installing sqlite...",
            "installing gnupg...",
            "Optional dependencies for gnupg",
            "    libldap: gpg2keys_ldap [installed]",
            "    libusb-compat: scdaemon",
            "    pcsclite: scdaemon",
            "installing gpgme...",
            "installing pacman-mirrorlist...",
            "installing archlinux-keyring...",
            "installing pacman...",
            "Optional dependencies for pacman",
            "    perl-locale-gettext: translation support in makepkg-template",
            "installing systemd-sysvcompat...",
            "installing iputils...",
            "Optional dependencies for iputils",
            "    xinetd: for tftpd",
            "installing iproute2...",
            "Optional dependencies for iproute2",
            "    linux-atm: ATM support",
            "installing base...",
            "Optional dependencies for base",
            "    linux: bare metal support",
            "installing m4...",
            "installing diffutils...",
            "installing autoconf...",
            "installing automake...",
            "installing binutils...",
            "installing bison...",
            "installing fakeroot...",
            "installing flex...",
            "installing libmpc...",
            "installing gcc...",
            "Optional dependencies for gcc",
            "    lib32-gcc-libs: for generating code for 32-bit ABI",
            "installing groff...",
            "Optional dependencies for groff",
            "    netpbm: for use together with man -H command interaction in browsers",
            "    psutils: for use together with man -H command interaction in browsers",
            "    libxaw: for gxditview",
            "    perl-file-homedir: for use with glilypond",
            "installing libtool...",
            "installing texinfo...",
            "installing gc...",
            "installing guile...",
            "installing make...",
            "installing patch...",
            "Optional dependencies for patch",
            "    ed: for patch -e functionality",
            "installing pkgconf...",
            "installing sudo...",
            "installing which...",
            "installing mkinitcpio-busybox...",
            "installing mkinitcpio...",
            "Optional dependencies for mkinitcpio",
            "    xz: Use lzma or xz compression for the initramfs image [installed]",
            "    bzip2: Use bzip2 compression for the initramfs image [installed]",
            "    lzop: Use lzo compression for the initramfs image",
            "    lz4: Use lz4 compression for the initramfs image [installed]",
            "    mkinitcpio-nfs-utils: Support for root filesystem on NFS",
            "installing linux-lts...",
            "Optional dependencies for linux-lts",
            "    crda: to set the correct wireless channels of your country",
            "    linux-firmware: firmware images needed for some devices [pending]",
            "installing linux-firmware...",
            "installing libaio...",
            "installing thin-provisioning-tools...",
            "installing lvm2...",
            "installing libedit...",
            "installing dnssec-anchors...",
            "installing ldns...",
            "Optional dependencies for ldns",
            "    libpcap: ldns-dpa tool [installed]",
            "installing openssh...",
            "Optional dependencies for openssh",
            "    xorg-xauth: X11 forwarding",
            "    x11-ssh-askpass: input passphrase in X",
            "installing sshpass...",
            "installing vi...",
            "Optional dependencies for vi",
            "    s-nail: used by the preserve command for notification",
            "installing vim-runtime...",
            "Optional dependencies for vim-runtime",
            "    sh: support for some tools and macros [installed]",
            "    python: demoserver example tool",
            "    gawk: mve tools upport [installed]",
            "installing gpm...",
            "installing vim...",
            "Optional dependencies for vim",
            "    python2: Python 2 language support",
            "    python: Python 3 language support",
            "    ruby: Ruby language support",
            "    lua: Lua language support",
            "    perl: Perl language support [installed]",
            "    tcl: Tcl language support",
            ":: Running post-transaction hooks...",
            "( 1/14) Creating system user accounts...",
            "( 2/14) Updating journal message catalog...",
            "( 3/14) Reloading system manager configuration...",
            "Running in chroot, ignoring request: daemon-reload",
            "( 4/14) Updating udev hardware database...",
            "( 5/14) Applying kernel sysctl settings...",
            "( 6/14) Creating temporary files...",
            "( 7/14) Reloading device manager configuration...",
            "Running in chroot, ignoring request.",
            "( 8/14) Arming ConditionNeedsUpdate...",
            "( 9/14) Updating module dependencies...",
            "(10/14) Updating linux initcpios...",
            "==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default'",
            "  -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img",
            "==> Starting build: 4.19.99-1-lts",
            "  -> Running build hook: [base]",
            "  -> Running build hook: [udev]",
            "  -> Running build hook: [autodetect]",
            "  -> Running build hook: [modconf]",
            "  -> Running build hook: [block]",
            "  -> Running build hook: [filesystems]",
            "  -> Running build hook: [keyboard]",
            "  -> Running build hook: [fsck]",
            "==> Generating module dependencies",
            "==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts.img",
            "==> Image generation successful",
            "==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback'",
            "  -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect",
            "==> Starting build: 4.19.99-1-lts",
            "  -> Running build hook: [base]",
            "  -> Running build hook: [udev]",
            "  -> Running build hook: [modconf]",
            "  -> Running build hook: [block]",
            "==> WARNING: Possibly missing firmware for module: wd719x",
            "==> WARNING: Possibly missing firmware for module: aic94xx",
            "  -> Running build hook: [filesystems]",
            "  -> Running build hook: [keyboard]",
            "  -> Running build hook: [fsck]",
            "==> Generating module dependencies",
            "==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img",
            "==> Image generation successful",
            "(11/14) Reloading system bus configuration...",
            "Running in chroot, ignoring request: try-reload-or-restart",
            "(12/14) Warn about old perl modules",
            "(13/14) Updating the info directory file...",
            "(14/14) Rebuilding certificate stores..."
        ]
    }
}
 
TASK [Generate /etc/fstab] *****************************************************
changed: [192.168.1.10]
 
TASK [chroot - Set /etc/hostname] **********************************************
changed: [192.168.1.10]
 
TASK [chroot - Set /etc/locale.conf] *******************************************
changed: [192.168.1.10]
 
TASK [chroot - Changes to /etc/locale.gen] *************************************
changed: [192.168.1.10]
 
TASK [debug] *******************************************************************
ok: [192.168.1.10] => {
    "msg": {
        "stderr": [
            "[root@archiso /]# cp -a /etc/locale.gen /etc/locale.gen.orig",
            "[root@archiso /]# sed -i '/#en_US*/s/^#//g' /etc/locale.gen",
            "[root@archiso /]# locale-gen",
            "[root@archiso /]# exit"
        ],
        "stdout": [
            "\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007Generating locales...",
            "  en_US.UTF-8... done",
            "  en_US.ISO-8859-1... done",
            "Generation complete.",
            "\u001b]0;root@archiso:/\u0007"
        ]
    }
}
 
TASK [chroot - Set /etc/vconsole.conf] *****************************************
changed: [192.168.1.10]
 
TASK [chroot - Set /etc/localtime] *********************************************
changed: [192.168.1.10]
 
TASK [chroot - Set /etc/hosts] *************************************************
changed: [192.168.1.10]
 
TASK [chroot - Set /etc/mkinitcpio.conf] ***************************************
changed: [192.168.1.10]
 
TASK [debug] *******************************************************************
ok: [192.168.1.10] => {
    "msg": {
        "stderr": [
            "[root@archiso /]# cp -a /etc/mkinitcpio.conf /etc/mkinitcpio.conf.orig",
            "[root@archiso /]# sed -i 's/block\\ filesystem/block\\ lvm2\\ filesystem/g' /etc/mki",
            "initcpio.conf",
            "[root@archiso /]# mkinitcpio -p linux-lts",
            "==> WARNING: Possibly missing firmware for module: wd719x",
            "==> WARNING: Possibly missing firmware for module: aic94xx",
            "[root@archiso /]# exit"
        ],
        "stdout": [
            "\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default'",
            "  -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img",
            "==> Starting build: 4.19.99-1-lts",
            "  -> Running build hook: [base]",
            "  -> Running build hook: [udev]",
            "  -> Running build hook: [autodetect]",
            "  -> Running build hook: [modconf]",
            "  -> Running build hook: [block]",
            "  -> Running build hook: [lvm2]",
            "  -> Running build hook: [filesystems]",
            "  -> Running build hook: [keyboard]",
            "  -> Running build hook: [fsck]",
            "==> Generating module dependencies",
            "==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts.img",
            "==> Image generation successful",
            "==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback'",
            "  -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect",
            "==> Starting build: 4.19.99-1-lts",
            "  -> Running build hook: [base]",
            "  -> Running build hook: [udev]",
            "  -> Running build hook: [modconf]",
            "  -> Running build hook: [block]",
            "  -> Running build hook: [lvm2]",
            "  -> Running build hook: [filesystems]",
            "  -> Running build hook: [keyboard]",
            "  -> Running build hook: [fsck]",
            "==> Generating module dependencies",
            "==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img",
            "==> Image generation successful",
            "\u001b]0;root@archiso:/\u0007"
        ]
    }
}
 
TASK [chroot - Install and configure Bootloader - GRUB] ************************
changed: [192.168.1.10]
 
TASK [debug] *******************************************************************
ok: [192.168.1.10] => {
    "msg": {
        "stderr": [
            "[root@archiso /]# pacman -S grub --noconfirm",
            "[root@archiso /]# grub-install \"/dev/vda\"",
            "Installing for i386-pc platform.",
            "Installation finished. No error reported.",
            "[root@archiso /]# sed -i 's/quiet/net\\.ifnames=0/g' /etc/default/grub",
            "[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg ",
            "Generating grub configuration file ...",
            "Found linux image: /boot/vmlinuz-linux-lts",
            "Found initrd image: /boot/initramfs-linux-lts.img",
            "Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img",
            "done",
            "[root@archiso /]# exit"
        ],
        "stdout": [
            "\u001b]0;root@archiso:/\u0007resolving dependencies...",
            "looking for conflicting packages...",
            "",
            "Packages (1) grub-2:2.04-5",
            "",
            "Total Download Size:    6.68 MiB",
            "Total Installed Size:  32.53 MiB",
            "",
            ":: Proceed with installation? [Y/n] ",
            ":: Retrieving packages...",
            "downloading grub-2:2.04-5-x86_64.pkg.tar.zst...",
            "checking keyring...",
            "checking package integrity...",
            "loading package files...",
            "checking for file conflicts...",
            "checking available disk space...",
            ":: Processing package changes...",
            "installing grub...",
            "Generate your bootloader configuration with:",
            "  grub-mkconfig -o /boot/grub/grub.cfg",
            "Optional dependencies for grub",
            "    freetype2: For grub-mkfont usage",
            "    fuse2: For grub-mount usage",
            "    dosfstools: For grub-mkrescue FAT FS and EFI support",
            "    efibootmgr: For grub-install EFI support",
            "    libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue",
            "    os-prober: To detect other OSes when generating grub.cfg in BIOS systems",
            "    mtools: For grub-mkrescue FAT FS support",
            ":: Running post-transaction hooks...",
            "(1/2) Arming ConditionNeedsUpdate...",
            "(2/2) Updating the info directory file...",
            "\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007\u001b]0;root@archiso:/\u0007"
        ]
    }
}
 
TASK [chroot - Set a default passwd for the root user (toor)] ******************
changed: [192.168.1.10]
 
TASK [Create /mnt/etc/systemd/networkd/eth0.network] ***************************
changed: [192.168.1.10]
 
TASK [chroot - Enable systemd-networkd.service] ********************************
changed: [192.168.1.10]
 
TASK [Update /mnt/etc/resolv.conf] *********************************************
changed: [192.168.1.10]
 
TASK [Check if file NOT exists - /mnt/etc/sshd/sshd.config.orig] ***************
ok: [192.168.1.10]
 
TASK [Copy /mnt/etc/sshd/sshd_config to /etc/ssh/sshd_config.orig] *************
changed: [192.168.1.10]
 
TASK [Change configuration of /mnt/etc/ssh/sshd_config] ************************
changed: [192.168.1.10] => (item={'regexp': '^#PermitRootLogin prohibit-password', 'line': '# Tachtler\n# default: #PermitRootLogin prohibit-password\nPermitRootLogin yes'})
changed: [192.168.1.10] => (item={'regexp': '^#PasswordAuthentication yes', 'line': '# Tachtler\n# default: #PasswordAuthentication yes\nPasswordAuthentication yes'})
 
TASK [chroot - Enable sshd.service] ********************************************
changed: [192.168.1.10]
 
PLAY RECAP *********************************************************************
192.168.1.10             : ok=41   changed=31   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Neustart

Zum Neustart des Servers, muss eine Verbindung via SSH mit dem neu erstellten Server als Benutzer root aufgebaut werden, was mit nachfolgendem Befehl realisiert werden kann:

$ ssh root@192.168.1.10
root@192.168.1.10's password: 
Last login: Sat Feb  1 06:54:29 2020 from 192.168.1.250

Der abschließende Neustart wird dann mit nachfolgendem Befehl durchgeführt:

root@archiso ~ # reboot

Nach erfolgreichem Neustart, sollte nachfolgender „Boot-Screen“ beim Start des Servers erscheinen, wie die folgende Bildschirmkopie zeigt:

ArchLinux - Boot - Screen

Nach erfolgreichem „Booten“ des Servers, sollte eine Anmeldung als Benutzer root nun möglich sein, wie ebenfalls die folgende Bildschirmkopie zeigt:

ArchLinux - Login - Screen

Erste Anmeldung

Nach dem erfolgreichen ersten Start des Servers sind die folgenden Gegebenheiten zu beachten:

:!: ACHTUNG - Es gibt außer dem Benutzer root, KEINE Benutzer die sich anmelden können!

Jetzt kann eine erste Verbindung als Benutzer root via SSH-Login auf den Server hergestellt werden. Nachfolgender Befehl soll dazu auf einer lokalen Workstation, nicht auf dem Server verwendet werden:

Benuzter: root
Passwort: toor

$ ssh root@192.168.1.11
The authenticity of host '192.168.1.11 (192.168.122.251)' can't be established.
ECDSA key fingerprint is SHA256:XXEA3rmz31DO2+fhLzlkXadg6XZ3k/8wKANKVt0Zygo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.11' (ECDSA) to the list of known hosts.
root@192.168.1.11's password: 
[root@archlinux ~]#

* Wobei die IP-Adresse: 192.168.1.11 im Playbook unter der Variable mnt_ip festgelegt wurde!

:!: WICHTIG - Bitte das Passwort für den Benutzer root noch ändern !!!

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/archlinux_-_minimal_server_installation_-_mit_ansible.txt · Zuletzt geändert: 2020/02/04 10:20 von klaus