Commit 7e625da3 authored by Robotka Adrián's avatar Robotka Adrián
Browse files

initial commit

parents
node_modules
\ No newline at end of file
Ansible KSZK-soknak
[Bevezető](guide/01_introduction)
<script>
window.location.href += "guide/01_introduction";
</script>
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
favicon.ico

14.7 KB

# Bevezetés
<Note type="tip" label>
Útbaigazítás
- Hitavalos doksi: [https://docs.ansible.com](https://docs.ansible.com/ansible/latest/user_guide/index.html)
- KSZK repók: [git.sch/kszk/ansible](https://git.sch.bme.hu/kszk/ansible)
- Piac: [Ansible Galaxy](https://galaxy.ansible.com/)
</Note>
## Mi ez?
Az ansible egy python program, ami [YAML](https://quickref.me/yaml) leírásokat alakít szerver (vagy más eszköz) konfigurációvá.
Ez egy deklaratív megközelítést tesz lehetővé, mert nem azt írjuk le, hogy mit kell csinálni egy cél eléréséhez hanem, hogy mi a kívánt állapot és ezt a jól definiált célt valósítja meg a program.
Ez hatékonyabb, mint shell parancsok összessége, mert több kiinduló állapotból ugyanazon leírás hatására jut el a kívánt állapotig, míg shell parancsoknál a különböző kiinduló helyzetekre, külön kódot kellene írni.
## Mire jó?
- Szerver(ek) telepítésére (legyen az kb. bármi)
- Kubernetes cluster telepítésére vagy ahhoz hozzáadni egy node-ot.
- Hálózati eszközök beállítására
- Egy adatbázishoz hozzáadni egy felhasználót és ellenőrizni a jogait
<Note type="danger">
Mire ne használd:
- Egyszeri telepítés esetén nem éri meg a töbletmunkát.
</Note>
# Alap fogalmak
Hivatalos doksi: https://docs.ansible.com/ansible/latest/user_guide/basic_concepts.html
<Note type="tip" label>
**TL;DR**
- **Task**: Elemi elérendő állapot/feladat. Pl.: Létezzen a /var/www/mysite
- **Role**: Task csoport egy adott cél elérésére. Pl. openssh beállító
- **Playbook**: Gépekhez kötött task csoport. Pl. DB cluster telepítése
- **Inventory**: Milyen gépekre, gépcsoportokra futtatjuk a playbook-ot.
</Note>
## Task
A task egy tetszőleges névvel ellátott module paraméterezés. Ebben a példában a beépített package module (ami az op. rednszer alapértelmezett csomagkezelőjét hívja) feltelepít három csomagot, ha még nincs fent. Ha fent van, akkor továbblép.
```yaml
- name: Install packages for debugging
package:
state: present
# use: apt # for ubuntu, default is apt, but you can overwrite
name:
- strace
- tmux
- tcpdump
```
Ezek a module-ok python csomagoknak felelnek meg. Paraméterezésük egyedi, azokról (minden használat esetén) érdemes doksit olvasni. Pl. https://docs.ansible.com/ansible/latest/collections/ansible/builtin/package_module.html
Az alap ansible modulokon túl még sok létezik. Pl. openssh kulcsokat is könnyű beállítani/ellenőrizni:
```yaml
- name: Ensure SSH authorized keys for user robotka
ansible.posix.authorized_key:
user: robotka
state: present
key: "https://git.sch.bme.hu/robotka.keys"
manage_dir: yes
exclusive: yes
```
Még példák az authorized_key modulhoz: https://docs.ansible.com/ansible/latest/collections/ansible/posix/authorized_key_module.html
## Role
Doksi: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html
A role egy paraméterezett task lista.
Pl. egy SSH szerver konfigurációjának az összeállítása változók alapján (milyen port, jelszóval be lehet-e lépni) és a szerver program újratöltése/újraindítása.
A role-ok mappastruktúrákba rendezik a különböző konfigurációs elemeket. Mindegyik mappában található egy `main.yml`, amit elsőként értelmeznek.
```text
tasks/ # tartalmazott feladatok
files/ # felmásolt fájlok
templates/ # kitemplate-ezendő, majd felmásolandó fájlok
vars/ # behívható változófájlok
defaults/ # alapértelmezett változók leírása
meta/ # a role-ra, mint csomagra jellemző meta információk
```
## Inventory
Doksi: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
Az inventory gépek felsorolása:
```yaml
all:
hosts:
cctv-210327.sch.bme.hu:
```
esetleg csoportosítása
```yaml
all:
children:
web:
hosts:
proxy.grapefruit:
masters:
hosts:
master-1.grapefruit:
workers:
hosts:
worker-1.grapefruit:
worker-2.grapefruit:
worker-3.grapefruit:
```
Itt megadhatunk gépekre/csoportokra jellemző értékeket is változókkal.
## Playbook
Doksi: https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html
A playbook egy adott céllal rendel feladatokat gépcsoportokhoz.
```yaml
- hosts: workers
become: yes # use sudo after login
roles:
- kszk.host # basic server host
- kszk.logging # central log collection
tasks:
- name: Setup ip routes
import_tasks: tasks/setup-routes.yaml
vars_files:
- vars/users.yaml # define variables for roles/tasks
- vars/router.yaml
```
# Alap fogalmak
<Note type="tip" label>
**TL;DR**
</Note>
### Task-ok szuperképességei
- Feltételek: when
- Változók
- Kimenet
- Tag-elés
- Import
```yaml
- name: Install open-vm-tools (VMs only)
package:
name: open-vm-tools
state: present
when: ansible_virtualization_type == "VMware"
```
when, vars, loop, tags, import
# Alap fogalmak
<Note type="tip" label>
**TL;DR**
</Note>
## title
# Alap fogalmak
<Note type="tip" label>
**TL;DR**
</Note>
## title
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="theme-color" content="#2f3136" />
<meta name="msapplication-navbutton-color" content="#2f3136" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="#2f3136" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta
http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"
/>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>Ansible docs</title>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="stylesheet" href="docute.css" />
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="docute"></div>
<script src="docute.js"></script>
<script>
new Docute({
target: '#docute',
title: 'KSZK :: Ansible',
layout: 'wide',
darkThemeToggler: true,
detectSystemDarkTheme: true,
highlight: ['bash', 'yaml', 'shell'],
nav: [
{
title: 'Főoldal',
link: '/',
},
{
title: 'GitSCH',
link: 'https://git.sch.bme.hu/kszk/ansible',
},
],
sidebar: [
{
title: '', // Hack
children: [
{
title: 'Bevezető',
link: '/guide/10_introduction',
},
{
title: 'Foglamak',
link: '/guide/20_concepts',
},
{
title: 'Futtatás',
link: '/guide/30_run',
},
{
title: 'Hogyan írjunk',
link: '/guide/40_creation',
},
{
title: 'Ansible a KSZK-ban',
link: '/guide/50_kszk',
}
],
},
],
fetchOptions: { cache: 'no-cache' },
});
</script>
</body>
</html>
This diff is collapsed.
{
"name": "ansible-presentation",
"version": "1.0.0",
"description": "Ansible for KSZK",
"scripts": {
"start": "srr"
},
"author": "",
"license": "GPL",
"dependencies": {
"serve-reload-replace": "^1.1.7"
}
}
.pre-wrapper {
margin-bottom: 20px !important;
margin-top: 20px !important;
}
.markdown-header {
margin-top: 80px !important;
}
ul {
margin-top: 0 !important;
}
.badge.is-danger > a {
color: white;
}
.medium-zoom-overlay {
background: #2f3136 !important;
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment