Ansible Kurs


Inhalt


Willkommen

Einstieg

Struktur & Rollen

Rollen

Übung: Erstellen eines Ordners auf allen Hosts

Übung: Chrony fix

Übung: PHP 8.4 ausrollen

Templates

Arbeiten mit Containern

Erweiterte Übung

Conditionals

Ansible-Vault

Light Mode

Rollen

Aufbau:

root@ansible-t000002:~/ansible/roles# tree training.training-user/
training.training-user/
└── tasks
    └── main.yaml
# tasks/main.yaml
- name: Create a user 'training' with a home directory
  ansible.builtin.user: # aus mitgeliefertem Modul `user`
    name: training
    create_home: yes 

Docs: - Alle Module - user Modul

Übung: Erstellen eines Ordners auf allen Hosts

root@ansible-t000002:~/ansible/roles# tree training.directory/
training.directory/
└── tasks
    └── main.yml
- name: Create directory `/root/ansible-training`
  ansible.builtin.file:
    path:  /root/ansible-training
    state: directory
    mode:  '0755'

Docs: file Modul

Erweiterung: Variabler Ordnername

host_vars/
├── ansible-t000002.yml
└── ansible-t000003.yml
# host_vars/ansible-t000002.yml
directory_path: "/root/ansible-dir1"
- name: Create directory `/root/ansible-training`
  ansible.builtin.file:
    path:  "{{ directory_path }}"
    state: directory
    mode:  '0755'

Erweiterung: Ordner per Ansible löschen

- name: Create directory `/root/ansible-training`
  ansible.builtin.file:
    path:  "{{ directory_path }}"
    state: directory
    mode:  '0755'

- name: Check for legacy path
  ansible.builtin.file:
    path:  /root/ansible-training
    state: absent

Übung: Chrony fix

-> Dateien können bei Rollen unter files/ abgelegt werden -> notify ermöglicht das ausführen von handlers falls tasks ausgeführt werden

training.chrony-fix/
├── files
│   └── chrony.conf
├── handlers
│   └── main.yml
└── tasks
    └── main.yml
# handlers/main.yml
# -----------------
- name: Reload systemd-daemon
  command: systemctl daemon-reload

- name: Restart chrony
  ansible.builtin.systemd_service:
    state: restarted
    name: chrony
# tasks/main.yml
# --------------
- name: Delete faulty systemd override config
  ansible.builtin.file:
    path: /etc/systemd/system/chronyd.service.d
    state: absent
  notify:
    - Reload systemd-daemon

- name: Write correct chrony config
  ansible.builtin.copy:
    src: chrony.conf
    dest: /etc/chrony/chrony.conf
    owner: root
    group: root
    mode: '0644'
  notify:
    - Restart chrony

Docs: - Copy modul - Command modul - Systemd modul

Übung: PHP 8.4 ausrollen

- name: Add php repo
  ansible.builtin.apt_repository:
    repo: ppa:ondrej/php
    state: present

- name: Install php8.4
  ansible.builtin.apt:
    name: php8.4
    state: present

Docs: - apt_repository Modul - apt Modul