123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- ---
- format: markdown
- title: Ansible ff@home aufsetzen
- toc: yes
- ...
- # Software
- - Debian 12 (bookworm) oder Ubuntu 22.04
- - python3 und ansible
- ***** Es empfiehlt sich, eine python virtuelle Umgebung zu verwenden *****
- Die folgenden Pakete installieren:
- sudo apt install python3-pip python3-venv
- Dazu in das Basisverzeichnis gehen (bei mir /datadisk), dann die virtuelle Umgebung anlegen
- python3 -m venv ffhome
- In das Verzeichnis ffhome wechseln und die Umgebung aktivieren
- source (oder.) bin/activate
-
- cd /datadisk/ffhome
- source bin/activate
- Dadurch ändert sich der prompt:
- (ffhome) 18:16:41[frankb@berglap /datadisk/ffhome 0]
- Zum Verlassen der Umgebung:
- deactivate oder Terminal Fenster schliessen
- Jetzt kann ansible in der ffhome Umgebung installiert werden:
- pip3 install ansible
- 18:11:20[frankb@berglap /datadisk/ffhome 0]
- Die Verzeichnistruktur der Testumgebung
- tree -L 4
- .
- ├── ansible.cfg
- ├── bin
- │ ├── activate
- │ ├── activate.csh
- │ ├── activate.fish
- │ ├── Activate.ps1
- │ ├── ansible
- │ ├── ansible-community
- ...
- │ └── yamllint
- ├── include
- ├── inventory
- │ ├── hosts.yaml
- │ └── host_vars
- │ ├── bergdesk
- │ │ ├── vars
- │ │ └── vault
- │ ├── berghofen
- │ │ ├── vars
- │ │ └── vault
- │ ├── berglap
- │ │ ├── vars
- │ │ └── vault
- │ └── luna
- │ ├── vars
- │ └── vault
- ├── lib
- │ └── python3.10
- ├── lib64 -> lib
- ...
- ├── playbooks
- │ └── update.yaml
- └── pyvenv.cfg
- Bei den ... sind Zeilen der Übersichtlichkeit halber weggelassen.
- Datei mit den beteiligten Hosts inventory/hosts.yaml
- ---
- all:
- vars:
- ansible_port: 24
- ansible_user: frankb
- ansible_become: true
-
- apus:
- hosts:
- berghofen:
- ansible_host: 192.168.178.51
- ansible_user: fb
- ansible_become_password: "{{ berghofen_password }}"
-
- desktops:
- hosts:
- bergdesk:
- ansible_host: 192.168.178.201
- ansible_become_pass: '{{ bergdesk_password }}'
-
- berglap:
- ansible_host: 192.168.178.52
- ansible_become_pass: '{{ berglap_password }}'
-
- luna:
- ansible_host: 192.168.178.224
- ansible_become_pass: '{{ luna_password }}'
-
- altlast:
- hosts:
- hoerde:
- ansible_host: 193.43.220.136
- ansible_become: true
- ansible_become_method: su
-
- supernodes:
- hosts:
- 31.172.33.20:
- ansible_port: 22
- snng-dus01.ffdo.de:
- ansible_port: 22
- snng-dtm01.ffdo.de:
- ansible_port: 22
- Die Gruppen apus und desktops enthalten die testhosts, die Gruppen altlast und supernodes sind nicht komplett einbezogen.
- Im Verzeichnis inventory/host_vars sind Variablen für die einzelnen hosts, also hier die passwords, in vars unverschlüsselt, in vault aes256 geschützt. Beispielhaft mal für bergdesk
- bergdesk/vars
- ---
- bergdesk_password: "{{ vault_bergdesk_password }}"
- bergdesk/vault
- $ANSIBLE_VAULT;1.2;AES256;xx
- 35656536383233636434636533613830303439316263636436363932333636626462616461636537
- 3838626266396332363236643361626134393238636133640a646333333866643161356333626564
- 32373735343033633666353763376230646137663639373438393537663031643562376365396337
- 3161646534666236350a303366373433373833373066353030363766616166666361376637393464
- 30613139313661643932373239333865616338653132613530393161656466326561633537383535
- 3631356664643139383037636565346630643036353364333866
- Zur Erzeugung der Verschlüsselung in der vault Datei
- ---
- vault_bergdesk_password: hier das echte PW eintragen
- dann mit
-
- ansible-vault encrypt vault --vault-id xx@prompt
- die verschlüsselte vault datei erzeugen.
- Anzeigen kann man die Datei mit
- ansible-vault view vault
- und entschlüsseln mit
- ansible-vault decrypt vault
- playbooks/update.yaml
- ---
- # name: update yaml
- - hosts: [desktops,apus,altlast]
-
- tasks:
- - name: Testausgabe
- debug: msg="Hallo von {{ ansible_hostname }} Ansible managed!"
-
- - name: df -h Aufruf
- command: df -h /
- changed_when: false
- register: df_cmd
-
- - debug:
- msg: '{{df_cmd.stdout_lines}} {{ansible_distribution }}'
-
- - name: ping meine hosts
- ansible.builtin.ping:
- changed_when: false
-
- # - name: Warte auf enter Taste
- # ansible.builtin.pause:
-
- - name: apt update mit upgrade und autoremove
- ansible.builtin.apt:
- update_cache: yes
- cache_valid_time: 3600
- autoremove: yes
- upgrade: 'yes'
- when: ansible_os_family == "Debian"
- - stat:
- path: /var/run/needrestart
- register: needrestart_file
- - name: reboot falls erforderlich
- ansible.builtin.reboot:
- when:
- - needrestart_file.stat.exists == True
-
- Ausgabe von playbook update.yaml (die letzten beiden tasks stat und reboot sind nicht in der Ausgabe, weil sie später hinzugefügt wurden)
- luna ist ausgeschaltet und nicht erreichbar.
- (ffhome) 20:55:59[frankb@berglap /datadisk/ffhome 0]
- ansible-playbook -b playbooks/update.yaml -i inventory/hosts.yaml --ask-vault-pass
- Vault password:
- PLAY [desktops,apus,altlast] ***************************************************************
- TASK [Gathering Facts] *********************************************************************
- [WARNING]: Platform linux on host berglap is using the discovered Python interpreter at
- /usr/bin/python3.10, but future installation of another Python interpreter could change the
- meaning of that path. See https://docs.ansible.com/ansible-
- core/2.17/reference_appendices/interpreter_discovery.html for more information.
- ok: [berglap]
- \n[WARNING]: Platform linux on host bergdesk is using the discovered Python interpreter at
- /usr/bin/python3.11, but future installation of another Python interpreter could change the
- meaning of that path. See https://docs.ansible.com/ansible-
- core/2.17/reference_appendices/interpreter_discovery.html for more information.
- ok: [bergdesk]
- fatal: [luna]: UNREACHABLE! => changed=false
- msg: 'Failed to connect to the host via ssh: ssh: connect to host 192.168.178.224 port 24: No route to host'
- \n unreachable: true
- [WARNING]: Platform linux on host berghofen is using the discovered Python interpreter at
- /usr/bin/python3.11, but future installation of another Python interpreter could change the
- meaning of that path. See https://docs.ansible.com/ansible-
- core/2.17/reference_appendices/interpreter_discovery.html for more information.
- ok: [berghofen]
- \n[WARNING]: Platform freebsd on host hoerde is using the discovered Python interpreter at
- /usr/local/bin/python3.9, but future installation of another Python interpreter could
- change the meaning of that path. See https://docs.ansible.com/ansible-
- core/2.17/reference_appendices/interpreter_discovery.html for more information.
- ok: [hoerde]
- TASK [Testausgabe] *************************************************************************
- ok: [bergdesk] =>
- msg: Hallo von bergdesk Ansible managed!
- ok: [berglap] =>
- msg: Hallo von berglap Ansible managed!
- ok: [berghofen] =>
- msg: Hallo von berghofen Ansible managed!
- ok: [hoerde] =>
- msg: Hallo von hoerde Ansible managed!
- TASK [df -h Aufruf] ************************************************************************
- ok: [berglap]
- ok: [bergdesk]
- ok: [berghofen]
- ok: [hoerde]
- TASK [debug] *******************************************************************************
- ok: [bergdesk] =>
- msg: '[''Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf'', ''/dev/sdb1 439G 98G 319G 24% /''] Debian'
- ok: [berglap] =>
- msg: '[''Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf'', ''/dev/mapper/system-root 444G 298G 124G 71% /''] Ubuntu'
- ok: [berghofen] =>
- msg: '[''Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf'', ''/dev/sda6 18G 5,1G 12G 30% /''] Debian'
- ok: [hoerde] =>
- msg: '[''Filesystem Size Used Avail Capacity Mounted on'', ''s3pool25/jail/hoerde.ffdo.net 3.9G 891M 3.0G 22% /''] FreeBSD'
- TASK [ping meine hosts] ********************************************************************
- ok: [berglap]
- ok: [bergdesk]
- ok: [berghofen]
- ok: [hoerde]
- TASK [apt update mit upgrade und autoremove] ***********************************************
- skipping: [hoerde]
- ok: [bergdesk]
- ok: [berglap]
- ok: [berghofen]
- PLAY RECAP *********************************************************************************
- bergdesk : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- berghofen : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- berglap : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- hoerde : ok=5 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
- luna : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
|