Ansible Bootstrap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 4: | Zeile 4: | ||
Man kann als unpriviligierter Benutzer Ansible benutzen. Dazu erstellen wir erstmal einen Arbeitordner im Home-Verzeichnis. | Man kann als unpriviligierter Benutzer Ansible benutzen. Dazu erstellen wir erstmal einen Arbeitordner im Home-Verzeichnis. | ||
| − | * cd ~ | + | * '''cd ~''' |
| − | * mkdir ansible | + | * '''mkdir ansible''' |
<!-----> | <!-----> | ||
| Zeile 18: | Zeile 18: | ||
** Standard Remote-User | ** Standard Remote-User | ||
** etc. | ** etc. | ||
| − | * vim ansible.cfg | + | * '''vim ansible.cfg''' |
<!-----> | <!-----> | ||
| Zeile 48: | Zeile 48: | ||
=== Erstellen von SSH-Keys === | === Erstellen von SSH-Keys === | ||
| − | * ssh-keygen | + | * '''ssh-keygen''' |
<!-----> | <!-----> | ||
| Zeile 54: | Zeile 54: | ||
=== Hinterlegen des öffentlichen SSH-Keys === | === Hinterlegen des öffentlichen SSH-Keys === | ||
| − | * vim bootstrap.yml | + | * '''vim bootstrap.yml''' |
<!-----> | <!-----> | ||
| Zeile 66: | Zeile 66: | ||
state: present | state: present | ||
<nowiki>key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"</nowiki> | <nowiki>key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"</nowiki> | ||
| − | * ansible-playbook bootstrap.yml -k | + | * '''ansible-playbook bootstrap.yml -k''' |
* Jetzt sollte kein Passwort notwendig sein | * Jetzt sollte kein Passwort notwendig sein | ||
| − | * ansible -m gather_facts debian | + | * '''ansible -m gather_facts debian''' |
<!-----> | <!-----> | ||
| Zeile 74: | Zeile 74: | ||
== Pakete installieren == | == Pakete installieren == | ||
| − | * vim bootstrap.yml | + | * '''vim bootstrap.yml''' |
<!-----> | <!-----> | ||
| Zeile 86: | Zeile 86: | ||
- vim | - vim | ||
- sudo | - sudo | ||
| − | * ansible-playbook bootstrap.yml --become-method=su -K | + | * '''ansible-playbook bootstrap.yml --become-method=su -K''' |
<!-----> | <!-----> | ||
| Zeile 95: | Zeile 95: | ||
* In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte Gruppe die Anmeldung passwortlos sein soll | * In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte Gruppe die Anmeldung passwortlos sein soll | ||
* Dazu die folgenden drei Schritte | * Dazu die folgenden drei Schritte | ||
| − | * vim bootstrap.yml | + | * '''vim bootstrap.yml''' |
<!-----> | <!-----> | ||
| Zeile 120: | Zeile 120: | ||
groups: sudo | groups: sudo | ||
append: true | append: true | ||
| − | * ansible-playbook bootstrap.yml --become-method=su -K | + | * '''ansible-playbook bootstrap.yml --become-method=su -K''' |
<!-----> | <!-----> | ||
| Zeile 126: | Zeile 126: | ||
== vim konfigurieren == | == vim konfigurieren == | ||
| − | * mkdir files | + | * '''mkdir files''' |
| − | * vim files/vimrc | + | * '''vim files/vimrc''' |
<!-----> | <!-----> | ||
| Zeile 149: | Zeile 149: | ||
nnoremap <Space> : | nnoremap <Space> : | ||
nnoremap <CR> / | nnoremap <CR> / | ||
| − | * vim bootstrap.yml | + | * '''vim bootstrap.yml''' |
<!-----> | <!-----> | ||
| Zeile 158: | Zeile 158: | ||
src: files/vimrc | src: files/vimrc | ||
dest: /etc/vim/vimrc | dest: /etc/vim/vimrc | ||
| − | * ansible-playbook bootstrap.yml | + | * '''ansible-playbook bootstrap.yml''' |
<!-----> | <!-----> | ||
| Zeile 168: | Zeile 168: | ||
* Hier könnte man noch den privaten SSH-Schlüssel angeben, wenn man mehrere hat. | * Hier könnte man noch den privaten SSH-Schlüssel angeben, wenn man mehrere hat. | ||
| − | * vim ansible.cfg | + | * '''vim ansible.cfg''' |
<!-----> | <!-----> | ||
| Zeile 179: | Zeile 179: | ||
* Hier kann man Variablen definieren, um das Verhalten von Ansible auf bestimmten Hosts/Gruppen zu beeinflussen. | * Hier kann man Variablen definieren, um das Verhalten von Ansible auf bestimmten Hosts/Gruppen zu beeinflussen. | ||
| − | * vim inventory | + | * '''vim inventory''' |
<!-----> | <!-----> | ||
| Zeile 189: | Zeile 189: | ||
== bootstrap.yml == | == bootstrap.yml == | ||
| − | * vim bootstrap.yml | + | * Man kann die Inventory-Parameter auch ins Play schreiben |
| + | * Das erspart | ||
| + | * '''vim bootstrap.yml''' | ||
<!-----> | <!-----> | ||
| Zeile 241: | Zeile 243: | ||
src: files/vimrc | src: files/vimrc | ||
dest: /etc/vim/vimrc | dest: /etc/vim/vimrc | ||
| + | = vimrc = | ||
| + | |||
| + | * '''vim files/vimrc''' | ||
| + | |||
| + | <!-----> | ||
| + | runtime! debian.vim | ||
| + | filetype indent plugin on | ||
| + | syntax on | ||
| + | colo torte | ||
| + | set background=dark | ||
| + | set nu | ||
| + | set relativenumber | ||
| + | set scrolloff=8 | ||
| + | set tabstop=8 | ||
| + | set softtabstop=4 | ||
| + | set shiftwidth=4 | ||
| + | set autoindent | ||
| + | set showcmd | ||
| + | set incsearch | ||
| + | set showmatch | ||
| + | set mouse=a | ||
| + | set omnifunc=syntaxcomplete#Complete | ||
| + | nnoremap <Space> : | ||
| + | nnoremap <CR> / | ||
Version vom 13. Februar 2023, 14:41 Uhr
Vorbereitung
Man kann als unpriviligierter Benutzer Ansible benutzen. Dazu erstellen wir erstmal einen Arbeitordner im Home-Verzeichnis.
- cd ~
- mkdir 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
- ansible -m gather_facts debian -k
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
- 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 Gruppe 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 nu set relativenumber set scrolloff=8 set tabstop=8 set softtabstop=4 set shiftwidth=4 set autoindent set showcmd set incsearch set showmatch set mouse=a 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
- 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 die Inventory-Parameter auch ins Play schreiben
- Das erspart
- vim bootstrap.yml
---
- name: Bootstrap von einfachen Debian-Systemen
hosts: debian
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 nu set relativenumber set scrolloff=8 set tabstop=8 set softtabstop=4 set shiftwidth=4 set autoindent set showcmd set incsearch set showmatch set mouse=a set omnifunc=syntaxcomplete#Complete nnoremap <Space> : nnoremap <CR> /