Ansible Bootstrap: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 18: Zeile 18:
 
** Standard Remote-User
 
** Standard Remote-User
 
** etc.
 
** etc.
* cat ansible.cfg
+
* vim ansible.cfg
  
 
<!----->
 
<!----->
Zeile 28: Zeile 28:
 
* 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
* cat inventory
+
* vim inventory
  
 
<!----->
 
<!----->
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 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
 +
 
 +
<!----->
 +
<span id="vim-konfigurieren"></span>
 +
== 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
 +
 
 +
<!----->
 +
<span id="zusammenfassung"></span>
 +
= Zusammenfassung =
 +
 
 +
<span id="ansible.cfg-1"></span>
 +
== 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
 +
<span id="inventory-1"></span>
 +
== 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 ==
 +
 
 +
* 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

Version vom 13. Februar 2023, 13:58 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: "Vorlage: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

  • 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: "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