typos and structure
This commit is contained in:
parent
ed5ccb7e24
commit
c42f4ee1fb
6 changed files with 84 additions and 51 deletions
15
Readme.md
15
Readme.md
|
@ -10,32 +10,31 @@ Ein server muss minimal vorbereitet sein, bevor er mit den hiesigen Skripten zum
|
||||||
|
|
||||||
Zusätzlich ist sehr empfehlenswert, dass die Admins die Maschinen mit ihren fqdns in ihrer ssh-config definiert haben.
|
Zusätzlich ist sehr empfehlenswert, dass die Admins die Maschinen mit ihren fqdns in ihrer ssh-config definiert haben.
|
||||||
|
|
||||||
Bisher gibt es hier zwei Sammlungen von files: zum Einen der Beginn des eigentlichen Zwecks: bisher kann eine Rolle (auf Basis der obigen Voraussetzungen) alle FFMWU-Server in dem ihnen allen identischen Aspekt vorberein, der Pflege der ssh keys der admins. Zum Anderen gibt es ein playbook, das eine lokale Test-VM aufsetzt, auf der man alle eigentlichen playbooks und Rollen testen kann, ohne ernsthaften Schaden anzurichten.
|
Bisher gibt es hier zwei Sammlungen von files: zum Einen der Beginn des eigentlichen Zwecks: bisher kann eine Rolle (auf Basis der obigen Voraussetzungen) alle FFMWU-Server in dem ihnen allen identischen Aspekt vorbereiten, der Pflege der ssh keys der admins. Zum Anderen gibt es ein playbook, das eine lokale Test-VM aufsetzt, auf der man alle eigentlichen playbooks und Rollen testen kann, ohne ernsthaften Schaden anzurichten.
|
||||||
|
|
||||||
## Aufsetzen und Pflegen von Gateways
|
## Aufsetzen und Pflegen von Gateways
|
||||||
|
|
||||||
Alle FFMWU-Gatways sind auch FFMWU-Server, alle anderen server bei uns überraschenderweise auch; so sind auch alle im inventory in der Gruppe 'ff-servers' zusammengefasst. Der Aspekt, der allen FFMWU-Servern gemein ist, sind die ssh-keys der admins. Auf einigen servern gibt es allerdings weitere Zugriffsberechtigte (spezialisiert admins).
|
Alle FFMWU-Gatways sind auch FFMWU-Server, alle anderen server bei uns überraschenderweise auch; so sind auch Alle im inventory in der Gruppe 'ff-servers' zusammengefasst. Der Aspekt, der allen FFMWU-Servern gemein ist, sind die ssh-keys der admins. Auf einigen servern gibt es allerdings weitere Zugriffsberechtigte (spezialisierte admins).
|
||||||
|
|
||||||
So gibt es eine Rolle ('ffmwu-server'), die allen hosts dieser Gruppe zugewiesen ist (über das playbook 'ffmwu-servers.yml'). Dieses playbook (einfach starten) weist die Rolle dazu, welche ihrerseits die shh keys auf den hosts pflegt.
|
So gibt es eine Rolle ('ffmwu-server'), die allen hosts dieser Gruppe zugewiesen ist (über das playbook 'ffmwu-servers.yml', später auch über Abhängigkeiten der speziellern playbooks). Dieses playbook (einfach starten) weist die Rolle zu, welche ihrerseits die shh keys auf den hosts pflegt.
|
||||||
|
|
||||||
Die Rolle besteht aus nur einem task und einer definierten Variable, die die keys der admins enthält. Sind auf einem host weitere ssh keys von Nöten, so werden disse als hostvar definiert.
|
Die Rolle besteht aus nur einem task und einer definierten Variable, die die keys der admins enthält. Sind auf einem host weitere ssh keys von Nöten, so werden disse als hostvar definiert.
|
||||||
|
|
||||||
## Erzeugen einer test-VM
|
## Erzeugen einer test-VM
|
||||||
|
|
||||||
Um die playbooks und Rollen gefahrlos testen zu können, bietet sich ein test host an. Hierfür kenn eine lokale VM zu Einsatz kommen, wenn die Voraussetzungen stimmen.
|
Um die playbooks und Rollen gefahrlos testen zu können, bietet sich ein test host an. Hierfür kann eine lokale VM zu Einsatz kommen, wenn die Voraussetzungen stimmen.
|
||||||
|
|
||||||
Damit auf der lokalen Maschine (der ansible controle machine) VMs ablaugen können, müssten verschiedene Voraussetzungen erfüllt sein. U. a.:
|
Damit auf der lokalen Maschine (der ansible controle machine) VMs ablaufen (und mit dem playbook angelegt werden) können, müssen verschiedene Voraussetzungen erfüllt sein. U. a.:
|
||||||
|
|
||||||
- installierte Pakete zu libvirt, kvm und qemu und Pakete virt-manager, isomaster
|
- installierte Pakete zu libvirt, kvm und qemu und Pakete virt-manager, isomaster
|
||||||
- >15G freier Plattenplatz
|
- >15G freier Plattenplatz
|
||||||
- ansible >= 2.1
|
- ansible >= 2.1
|
||||||
|
|
||||||
Leifer sind die letzten 2 Meter der Aufgabe offenbar nicht automatisierbar. Deshalb muss der user an einer Stelle mit 'isomaster'kurz etwas manuell durchführen
|
Leider sind die letzten 2 Meter der Aufgabe offenbar in dieser Art nicht automatisierbar. Deshalb muss der user an einer Stelle mit 'isomaster' kurz etwas manuell durchführen
|
||||||
Das playbook 'loctevm-reset.yml' einfach ausführen.
|
Das playbook 'loctevm-reset.yml' einfach ausführen.
|
||||||
|
|
||||||
### bekannte Probleme
|
### bekannte Probleme
|
||||||
|
|
||||||
- Oft kann ansible die erzeugt VM nicht starten (um die debian-Installation anzustoßen; per Pedes (mit virt-manager) sollte es aber funktionieren.
|
- Wenn die VM wegen Zugriffsfehler auf die virtuellen volumes nicht startet, können die Berechtigungen der übergeordneten Verzeichnisse Schuld sein -> hier mal schauen.
|
||||||
- Ein Schritt scheint nicht automagisierbar, hier werden isomaster & der user benötigt.
|
- Ein Schritt scheint nicht automagisierbar, hier werden isomaster & der user benötigt.
|
||||||
- Beim ersten Start werden gelegentlich Laufwerke nicht akzeptiert.
|
|
||||||
- Bisher wird direkt die 64bit-Version ausgewählt.
|
- Bisher wird direkt die 64bit-Version ausgewählt.
|
||||||
|
|
|
@ -73,7 +73,8 @@
|
||||||
delegate_to: 127.0.0.1 # local action
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
- name: manual intervention 1 - (re)install configs
|
- name: manual intervention 1 - (re)install configs
|
||||||
debug: msg=|
|
debug:
|
||||||
|
msg: |
|
||||||
*******************************
|
*******************************
|
||||||
*
|
*
|
||||||
* MANUAL ACTION NEEDED (step 2)
|
* MANUAL ACTION NEEDED (step 2)
|
||||||
|
@ -95,8 +96,16 @@
|
||||||
state=present timeout=900
|
state=present timeout=900
|
||||||
delegate_to: 127.0.0.1 # local action
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
|
- name: allow some time for big file to be written
|
||||||
|
pause: seconds=5
|
||||||
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
|
- name: correct access rights of iso file
|
||||||
|
file: mode=0644 path={{ vm_path }}/debian-8.5.0-amd64-i386-{{ inventory_hostname }}.iso state=file
|
||||||
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
when: download.changed or not seeded.stat.exists
|
when: download.changed or not seeded.stat.exists
|
||||||
# böock end
|
# block end
|
||||||
|
|
||||||
#- name: regenerate seeded copy when downloaded file changed
|
#- name: regenerate seeded copy when downloaded file changed
|
||||||
# copy:
|
# copy:
|
||||||
|
|
10
loctevm-reset-prereq.inc.yml
Normal file
10
loctevm-reset-prereq.inc.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
# FIXME: do nothing for now
|
||||||
|
# FIXME: how to learn about IP of VM ???
|
||||||
|
|
||||||
|
#- name: prepare escalation
|
||||||
|
# set_fact: ansible_become_pass=bloed
|
||||||
|
#
|
||||||
|
#- name: ensure admin user
|
||||||
|
# user: comment=FFMWU Administrator name=admin state=present
|
24
loctevm-reset-vm.inc.yml
Normal file
24
loctevm-reset-vm.inc.yml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: find already defined local VMs
|
||||||
|
virt: command=list_vms
|
||||||
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
# become: True
|
||||||
|
register: vms
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: construct VM xml file
|
||||||
|
template:
|
||||||
|
src: templates/loctevm.xml
|
||||||
|
dest: "{{ vm_path }}/loctevm.xml"
|
||||||
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
|
- name: define VM
|
||||||
|
virt:
|
||||||
|
command: define
|
||||||
|
name: "{{ inventory_hostname }}"
|
||||||
|
xml: "{{ lookup('file',vm_path ~ '/loctevm.xml') }}"
|
||||||
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
|
when: not inventory_hostname in vms.list_vms
|
||||||
|
# block end
|
|
@ -12,43 +12,34 @@
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: ensure VM dir and vm image dir
|
- name: ensure VM dir and vm image dir
|
||||||
file: path={{ vm_path }} state=directory mode=0700
|
file: path={{ vm_path }} state=directory mode=0755
|
||||||
delegate_to: 127.0.0.1 # local action
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
- name: exnsure image file
|
- name: ensure image file # FIXME: change to rm + recreate
|
||||||
command: fallocate -l 15G {{ vm_path }}/loctevm.img
|
command: fallocate -l 10G {{ vm_path }}/loctevm.img # 15G? size?
|
||||||
args:
|
args:
|
||||||
creates: "{{ vm_path }}/loctevm.img"
|
creates: "{{ vm_path }}/loctevm.img"
|
||||||
delegate_to: 127.0.0.1 # local action
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
|
- name: correct access rights of image file
|
||||||
|
file: mode=0666 path={{ vm_path }}/loctevm.img state=file
|
||||||
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
- name: get and prepare debian image file
|
- name: get and prepare debian image file
|
||||||
include: loctevm-reset-iso.inc.yml
|
include: loctevm-reset-iso.inc.yml
|
||||||
|
|
||||||
- name: find already defined local VMs
|
- name: define VM (if not already)
|
||||||
virt: command=list_vms
|
include: loctevm-reset-vm.inc.yml
|
||||||
delegate_to: 127.0.0.1 # local action
|
|
||||||
become: True
|
|
||||||
register: vms
|
|
||||||
|
|
||||||
- block:
|
- name: create VM - should start OS installation
|
||||||
- name: construct VM xml file
|
|
||||||
template:
|
|
||||||
src: templates/loctevm.xml
|
|
||||||
dest: "{{ vm_path }}/loctevm.xml"
|
|
||||||
delegate_to: 127.0.0.1 # local action
|
|
||||||
|
|
||||||
- name: define VM
|
|
||||||
virt:
|
|
||||||
command: define
|
|
||||||
name: "{{ inventory_hostname }}"
|
|
||||||
xml: "{{ lookup('file',vm_path ~ '/loctevm.xml') }}"
|
|
||||||
delegate_to: 127.0.0.1 # local action
|
|
||||||
|
|
||||||
when: not inventory_hostname in vms.list_vms
|
|
||||||
# block end
|
|
||||||
|
|
||||||
- name: create VM
|
|
||||||
virt:
|
virt:
|
||||||
state: running
|
state: running
|
||||||
name: "{{ inventory_hostname }}"
|
name: "{{ inventory_hostname }}"
|
||||||
delegate_to: 127.0.0.1 # local action
|
delegate_to: 127.0.0.1 # local action
|
||||||
|
|
||||||
|
- hosts: test-vms
|
||||||
|
remote_user: hein
|
||||||
|
# become: True
|
||||||
|
|
||||||
|
- name: prepare VM (if not already)
|
||||||
|
include: loctevm-reset-prereq.inc.yml
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
<disk type='file' device='cdrom'>
|
<disk type='file' device='cdrom'>
|
||||||
<source file='{{ vm_path }}/debian-8.5.0-amd64-i386-{{ inventory_hostname }}.iso'/>
|
<source file='{{ vm_path }}/debian-8.5.0-amd64-i386-{{ inventory_hostname }}.iso'/>
|
||||||
<target dev='vdc' bus='virtio'/>
|
<target dev='hdc' bus='ide'/>
|
||||||
</disk>
|
</disk>
|
||||||
|
|
||||||
<interface type='network'>
|
<interface type='network'>
|
||||||
|
|
Loading…
Reference in a new issue