Ansible Bootstrap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | + | ||
= Vorbereitung = | = Vorbereitung = | ||
* Man kann als unpriviligierter Benutzer Ansible benutzen. | * Man kann als unpriviligierter Benutzer Ansible benutzen. | ||
* Es empfiehlt sich einen Arbeitsordner zu erstellen. | * Es empfiehlt sich einen Arbeitsordner zu erstellen. | ||
| − | * ''' | + | * '''mkdir ~/ansible''' |
| − | * ''' | + | * '''cd ~/ansible''' |
| − | |||
| − | |||
= Ansible-Konfigurationsdateien = | = Ansible-Konfigurationsdateien = | ||
| Zeile 20: | Zeile 18: | ||
* '''vim ansible.cfg''' | * '''vim ansible.cfg''' | ||
| − | |||
[defaults] | [defaults] | ||
inventory = inventory | inventory = inventory | ||
| Zeile 28: | Zeile 25: | ||
* diese Datei enthält die zu administrierenden Hosts | * diese Datei enthält die zu administrierenden Hosts | ||
* man kann diese in Gruppen einteilen und bestimmte Variablen (SSH-Passwort, Python-Interpreter, Become-Methode…) zuordnen | * man kann diese in Gruppen einteilen und bestimmte Variablen (SSH-Passwort, Python-Interpreter, Become-Methode…) zuordnen | ||
| − | * vim inventory | + | * '''vim inventory''' |
| − | |||
[debian] | [debian] | ||
10.81.3.10 | 10.81.3.10 | ||
| − | + | ||
== Erreichbarkeitstest == | == Erreichbarkeitstest == | ||
| − | * ansible -m gather_facts debian -k | + | * mit der Option '''-k''' wird das SSH-Passwort abgefragt |
| + | * '''ansible -m gather_facts debian -k''' | ||
| + | |||
| + | 10.81.3.10 | SUCCESS => { | ||
| + | "ansible_facts": { | ||
| + | "ansible_all_ipv4_addresses": [ | ||
| + | "10.81.3.10" | ||
| + | ], | ||
| + | "ansible_all_ipv6_addresses": [ | ||
| + | "2003:a:32a:1700:a00:27ff:fee6:4fc0", | ||
| + | "fe80::a00:27ff:fee6:4fc0" | ||
| + | ], | ||
| − | |||
| − | |||
= Bootstrap = | = Bootstrap = | ||
| − | |||
== Passwortloses Login == | == Passwortloses Login == | ||
| − | |||
=== Erstellen von SSH-Keys === | === Erstellen von SSH-Keys === | ||
* '''ssh-keygen''' | * '''ssh-keygen''' | ||
| − | |||
| − | |||
=== Hinterlegen des öffentlichen SSH-Keys === | === Hinterlegen des öffentlichen SSH-Keys === | ||
* '''vim bootstrap.yml''' | * '''vim bootstrap.yml''' | ||
| − | |||
--- | --- | ||
- name: Bootstrap eines einzelnen Hosts | - name: Bootstrap eines einzelnen Hosts | ||
| Zeile 70: | Zeile 70: | ||
* '''ansible -m gather_facts debian''' | * '''ansible -m gather_facts debian''' | ||
| − | |||
| − | |||
== Pakete installieren == | == Pakete installieren == | ||
* '''vim bootstrap.yml''' | * '''vim bootstrap.yml''' | ||
| − | |||
... | ... | ||
- name: Installiere vim und sudo | - name: Installiere vim und sudo | ||
| Zeile 86: | Zeile 83: | ||
- vim | - vim | ||
- sudo | - sudo | ||
| − | * '''ansible-playbook bootstrap.yml - | + | * Die Standard Become-Methode ist '''sudo''' |
| + | * Da es aber noch nicht installiert ist, müssen wir '''su''' verwenden | ||
| + | * Das root Passwort kann mit '''-K''' mitgegeben werden | ||
| + | * '''ansible-playbook bootstrap.yml -–become-method=su -K''' | ||
| − | |||
| − | |||
== Passwortlos zum Benutzer root werden == | == Passwortlos zum Benutzer root werden == | ||
* Wir haben vorher das Paket sudo installiert, welches die Standard Become-Methode ist | * Wir haben vorher das Paket sudo installiert, welches die Standard Become-Methode ist | ||
| − | * In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte | + | * In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte Gruppen die Anmeldung passwortlos sein soll |
* Dazu die folgenden drei Schritte | * Dazu die folgenden drei Schritte | ||
* '''vim bootstrap.yml''' | * '''vim bootstrap.yml''' | ||
| − | |||
... | ... | ||
- name: Sicherstellen, dass die Gruppe sudo existiert | - name: Sicherstellen, dass die Gruppe sudo existiert | ||
| Zeile 120: | Zeile 117: | ||
groups: sudo | groups: sudo | ||
append: true | append: true | ||
| − | * '''ansible-playbook bootstrap.yml | + | * '''ansible-playbook bootstrap.yml –become-method=su -K''' |
| − | |||
| − | |||
== vim konfigurieren == | == vim konfigurieren == | ||
| Zeile 129: | Zeile 124: | ||
* '''vim files/vimrc''' | * '''vim files/vimrc''' | ||
| − | |||
runtime! debian.vim | runtime! debian.vim | ||
filetype indent plugin on | filetype indent plugin on | ||
| Zeile 135: | Zeile 129: | ||
colo torte | colo torte | ||
set background=dark | set background=dark | ||
| − | |||
| − | |||
set scrolloff=8 | set scrolloff=8 | ||
set tabstop=8 | set tabstop=8 | ||
| Zeile 145: | Zeile 137: | ||
set incsearch | set incsearch | ||
set showmatch | set showmatch | ||
| − | set mouse= | + | set mouse= |
set omnifunc=syntaxcomplete#Complete | set omnifunc=syntaxcomplete#Complete | ||
nnoremap <Space> : | nnoremap <Space> : | ||
| Zeile 151: | Zeile 143: | ||
* '''vim bootstrap.yml''' | * '''vim bootstrap.yml''' | ||
| − | |||
... | ... | ||
- name: Füge das lokale Fragment an die Default vim-Einstellungen | - name: Füge das lokale Fragment an die Default vim-Einstellungen | ||
| Zeile 158: | Zeile 149: | ||
src: files/vimrc | src: files/vimrc | ||
dest: /etc/vim/vimrc | dest: /etc/vim/vimrc | ||
| + | * Da nun alle Zugänge für Ansible passwortlos sind, können wir die vorigen Parameter weglassen | ||
* '''ansible-playbook bootstrap.yml''' | * '''ansible-playbook bootstrap.yml''' | ||
| − | |||
| − | |||
= Zusammenfassung = | = Zusammenfassung = | ||
| − | |||
== ansible.cfg == | == ansible.cfg == | ||
| Zeile 170: | Zeile 159: | ||
* '''vim ansible.cfg''' | * '''vim ansible.cfg''' | ||
| − | |||
[defaults] | [defaults] | ||
inventory = inventory | inventory = inventory | ||
remote_user = xinux | remote_user = xinux | ||
private_key_file = ~/.ssh/id_rsa | private_key_file = ~/.ssh/id_rsa | ||
| − | + | ||
== inventory == | == inventory == | ||
| Zeile 181: | Zeile 169: | ||
* '''vim inventory''' | * '''vim inventory''' | ||
| − | |||
[debian] | [debian] | ||
10.81.3.10 | 10.81.3.10 | ||
| Zeile 189: | Zeile 176: | ||
== bootstrap.yml == | == bootstrap.yml == | ||
| + | * Man kann sich die Auflistung aller Gruppen mit ''hosts: all'' ersparen | ||
| + | * Da man meistens alle Hosts bootstrappen will, empfiehlt es sich das so zu schreiben | ||
* Man kann die Inventory-Parameter auch ins Play schreiben | * Man kann die Inventory-Parameter auch ins Play schreiben | ||
| − | * Das erspart | + | * Das erspart uns die Eingabeparameter |
| + | * Diese Variablen werden auch nur bei diesem Play angewendet | ||
* '''vim bootstrap.yml''' | * '''vim bootstrap.yml''' | ||
| − | |||
--- | --- | ||
- name: Bootstrap von einfachen Debian-Systemen | - name: Bootstrap von einfachen Debian-Systemen | ||
| − | hosts: | + | hosts: '''all''' |
become: true | become: true | ||
vars: | vars: | ||
| Zeile 247: | Zeile 236: | ||
* '''vim files/vimrc''' | * '''vim files/vimrc''' | ||
| − | |||
runtime! debian.vim | runtime! debian.vim | ||
filetype indent plugin on | filetype indent plugin on | ||
| Zeile 253: | Zeile 241: | ||
colo torte | colo torte | ||
set background=dark | set background=dark | ||
| − | |||
| − | |||
set scrolloff=8 | set scrolloff=8 | ||
set tabstop=8 | set tabstop=8 | ||
| Zeile 263: | Zeile 249: | ||
set incsearch | set incsearch | ||
set showmatch | set showmatch | ||
| − | set mouse= | + | set mouse= |
set omnifunc=syntaxcomplete#Complete | set omnifunc=syntaxcomplete#Complete | ||
nnoremap <Space> : | nnoremap <Space> : | ||
nnoremap <CR> / | nnoremap <CR> / | ||
Aktuelle Version vom 12. April 2024, 07:40 Uhr
Vorbereitung
- Man kann als unpriviligierter Benutzer Ansible benutzen.
- Es empfiehlt sich einen Arbeitsordner zu erstellen.
- mkdir ~/ansible
- cd ~/ansible
Ansible-Konfigurationsdateien
ansible.cfg
- Hier schaut Ansible nach Dateien wie:
- die Liste der Hosts
- Playbook-Verzeichnisse
- Standard Remote-User
- etc.
- vim ansible.cfg
[defaults] inventory = inventory remote_user = xinux
inventory
- diese Datei enthält die zu administrierenden Hosts
- man kann diese in Gruppen einteilen und bestimmte Variablen (SSH-Passwort, Python-Interpreter, Become-Methode…) zuordnen
- vim inventory
[debian] 10.81.3.10
Erreichbarkeitstest
- mit der Option -k wird das SSH-Passwort abgefragt
- ansible -m gather_facts debian -k
10.81.3.10 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"10.81.3.10"
],
"ansible_all_ipv6_addresses": [
"2003:a:32a:1700:a00:27ff:fee6:4fc0",
"fe80::a00:27ff:fee6:4fc0"
],
Bootstrap
Passwortloses Login
Erstellen von SSH-Keys
- ssh-keygen
Hinterlegen des öffentlichen SSH-Keys
- vim bootstrap.yml
---
- name: Bootstrap eines einzelnen Hosts
hosts: debian
tasks:
- name: Hinterlege SSH-Key
authorized_key:
user: xinux
state: present
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
- ansible-playbook bootstrap.yml -k
- Jetzt sollte kein Passwort notwendig sein
- ansible -m gather_facts debian
Pakete installieren
- vim bootstrap.yml
...
- name: Installiere vim und sudo
become: true
package:
name: "{{ item }}"
state: present
with_items:
- vim
- sudo
- Die Standard Become-Methode ist sudo
- Da es aber noch nicht installiert ist, müssen wir su verwenden
- Das root Passwort kann mit -K mitgegeben werden
- ansible-playbook bootstrap.yml -–become-method=su -K
Passwortlos zum Benutzer root werden
- Wir haben vorher das Paket sudo installiert, welches die Standard Become-Methode ist
- In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte Gruppen die Anmeldung passwortlos sein soll
- Dazu die folgenden drei Schritte
- vim bootstrap.yml
...
- name: Sicherstellen, dass die Gruppe sudo existiert
become: true
group:
name: sudo
state: present
- name: Erlaube der Gruppe sudo passwortloses Login
become: true
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%sudo'
line: '%sudo ALL=(ALL) NOPASSWD: ALL'
validate: /usr/sbin/visudo -cf %s
- name: Füge Benutzer xinux zur Gruppe sudo hinzu
become: true
user:
name: xinux
groups: sudo
append: true
- ansible-playbook bootstrap.yml –become-method=su -K
vim konfigurieren
- mkdir files
- vim files/vimrc
runtime! debian.vim filetype indent plugin on syntax on colo torte set background=dark set scrolloff=8 set tabstop=8 set softtabstop=4 set shiftwidth=4 set autoindent set showcmd set incsearch set showmatch set mouse= set omnifunc=syntaxcomplete#Complete nnoremap <Space> : nnoremap <CR> /
- vim bootstrap.yml
...
- name: Füge das lokale Fragment an die Default vim-Einstellungen
become: true
copy:
src: files/vimrc
dest: /etc/vim/vimrc
- Da nun alle Zugänge für Ansible passwortlos sind, können wir die vorigen Parameter weglassen
- ansible-playbook bootstrap.yml
Zusammenfassung
ansible.cfg
- Hier könnte man noch den privaten SSH-Schlüssel angeben, wenn man mehrere hat.
- vim ansible.cfg
[defaults] inventory = inventory remote_user = xinux private_key_file = ~/.ssh/id_rsa
inventory
- Hier kann man Variablen definieren, um das Verhalten von Ansible auf bestimmten Hosts/Gruppen zu beeinflussen.
- vim inventory
[debian] 10.81.3.10 [all:vars] ansible_python_interpreter=/usr/bin/python3
bootstrap.yml
- Man kann sich die Auflistung aller Gruppen mit hosts: all ersparen
- Da man meistens alle Hosts bootstrappen will, empfiehlt es sich das so zu schreiben
- Man kann die Inventory-Parameter auch ins Play schreiben
- Das erspart uns die Eingabeparameter
- Diese Variablen werden auch nur bei diesem Play angewendet
- vim bootstrap.yml
---
- name: Bootstrap von einfachen Debian-Systemen
hosts: all
become: true
vars:
- ansible_ssh_pass: 123Start$
- ansible_become_pass: 123Start$
- ansible_become_method: su
tasks:
- name: Hinterlege SSH-Key
authorized_key:
user: "{{ item }}"
state: present
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
with_items:
- xinux
- root
- name: Installiere vim und sudo
package:
name: "{{ item }}"
state: present
with_items:
- vim
- sudo
- name: Sicherstellen, dass die Gruppe sudo existiert
group:
name: sudo
state: present
- name: Erlaube der Gruppe sudo passwortloses Login
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%sudo'
line: '%sudo ALL=(ALL) NOPASSWD: ALL'
validate: /usr/sbin/visudo -cf %s
- name: Füge Benutzer xinux zur Gruppe sudo hinzu
user:
name: xinux
groups: sudo
append: true
- name: Füge das lokale Fragment an die Default vim-Einstellungen
copy:
src: files/vimrc
dest: /etc/vim/vimrc
vimrc
- vim files/vimrc
runtime! debian.vim filetype indent plugin on syntax on colo torte set background=dark set scrolloff=8 set tabstop=8 set softtabstop=4 set shiftwidth=4 set autoindent set showcmd set incsearch set showmatch set mouse= set omnifunc=syntaxcomplete#Complete nnoremap <Space> : nnoremap <CR> /