Ansible Bootstrap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 86: | Zeile 86: | ||
* Da es aber noch nicht installiert ist, müssen wir '''su''' verwenden | * Da es aber noch nicht installiert ist, müssen wir '''su''' verwenden | ||
* Das root Passwort kann mit '''-K''' mitgegeben werden | * Das root Passwort kann mit '''-K''' mitgegeben werden | ||
− | * '''ansible-playbook bootstrap.yml –become-method=su -K''' | + | * '''ansible-playbook bootstrap.yml -–become-method=su -K''' |
== Passwortlos zum Benutzer root werden == | == Passwortlos zum Benutzer root werden == |
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> /