Ansible Bootstrap: Unterschied zwischen den Versionen
(Änderung 41975 von Linkai.zhang (Diskussion) rückgängig gemacht.) Markierung: Rückgängigmachung |
|||
| Zeile 125: | Zeile 125: | ||
<li><p>Diese Variablen werden auch nur bei diesem Play angewendet</p></li> | <li><p>Diese Variablen werden auch nur bei diesem Play angewendet</p></li> | ||
<li><p>'''vim bootstrap.yml'''</p> | <li><p>'''vim bootstrap.yml'''</p> | ||
| − | + | ||
| + | ----- | ||
| + | |||
| + | <ul> | ||
| + | <li>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</li></ul> | ||
| + | </li></ul> | ||
== vimrc == | == vimrc == | ||
Version vom 20. Februar 2023, 08:43 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: “Vorlage: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: “Vorlage: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>`{=html}` : nnoremap<CR>{=html}/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
Alle in inventory eingetragenen Hosts adressieren mit hosts: all
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: “Vorlage:Item” state: present key: “Vorlage:Lookup(‘file’, ‘~/.ssh/id rsa.pub’)” with_items: - xinux - root - name: Installiere vim und sudo package: name: “Vorlage: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>`{=html}` : nnoremap<CR>{=html}/