Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • vimazeno/blog.limos.fr
  • matrossevi/blog.limos.fr
  • borlonjo/blog.limos.fr
3 results
Show changes
Showing
with 1386 additions and 12 deletions
# monitoring
# my
# OpenStack
* mise à jour
* maquettes documentées / réutilisables
* étude de l'architecture
* procédure de démontage / d'amaigrissement
* rationalisation des projets en cours
* gestion de l'existant
* IaaS pour les projets à venir
* initiaition à terraform
* introduction à go
* notamment sur les providers proxmox / terraform
# Proxmox
## aka pve
## Proxmox
* 10 ans
## interfacer avec le LDAP
# https://forum.proxmox.com/threads/how-to-transfer-large-iso-to-proxmox.455/
iptables -t nat -I PREROUTING -d 37.59.57.58 -p tcp --dport 443 -j DNAT --to-destination 37.59.57.58:8006
apt install iptables-persistent
service iptables save
# https://pve.proxmox.com/wiki/HTTPS_Certificate_Configuration_(Version_4.x,_5.0_and_5.1)
# https://pve.proxmox.com/wiki/Storage:_Directory
vi /etc/pve/storage.cfg
dir: local
path /var/lib/vz
vgname pve
content iso,vztmpl,backup,rootdir,images
service pvestatd restart
# https://pve.proxmox.com/wiki/Cloud-Init_FAQ
Hardware > Add > loudInit Drive
SCSI / 0 / local
# https://pve.proxmox.com/wiki/Cloud-Init_Support
# create local-lvm (https://pve.proxmox.com/wiki/Storage)
# download the image
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
# create a new VM
qm create 9001 --memory 2048 --net0 virtio,bridge=vmbr0
# import the downloaded disk to local-lvm storage
qm importdisk 9001 bionic-server-cloudimg-amd64.img local
# finally attach the new disk to the VM as scsi drive
qm set 9001 --scsihw virtio-scsi-pci --scsi0 local:vm-9001-disk-0
qm set 9000 --ide2 local:cloudinit
qm set 9000 --boot c --bootdisk scsi0
qm set 9000 --serial0 socket --vga serial0
qm template 9000
Deploying Cloud-Init Templates
qm clone 9000 123 --name isp
qm set 123 --sshkey /root/limosadm.pub
qm set 123 --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1
# stack
![stack](images/aws.png "aws")<!-- .element width="30%" -->
aka **B** rew **W** ired **S** tack
## soyons honnête!
Tout repose sur
* [proxmox-provisionner - pulse](https://github.com/Telmate/terraform-provider-proxmox/pulse)
* [proxmox-api - pulse](https://github.com/Telmate/proxmox-api-go/pulse)
et sur les produits [HashiCorp](https://github.com/hashicorp)
## Directory Layout
```shell
+ ansible/
+ plugins/ # utilisé pour le callback anstomlog <3
+ roles/ # roles ansible (commun)
+ bin/ # toutes les commandes de la stack
+ docs/ # documentation
+ packer/ # préparation des templates pve
+ workspaces/ # répertoire pour les workspaces
+ wk/ # répertoire du workspace wk
+ ansible/ # vars et playbooks ansible de wk
+ terraform/ # ressources terraform de wk
- config.yml # config de wk
- ssh_config # config ssh de wk
```
# GROUND0
## PRA
Après la catastrophe on a remnté
- un réseau opérationnel
- des noeuds proxomox non configurés (fresh install)
- un serveur vault restauré
- une copie du repo de la stack et des rôles minimaux nécessaires
- pve
- gitlab
- backuppc
- la sauvegarde de tous les services à restaurer avec backuppc
# terraform
![terraform](images/terraform.png "terraform")<!-- .element width="30%" -->
# INP/ISIMA / LIMOS
## Bienvenue
## DOC
* https://doc.isima.fr
* https://doc.cri.isima.fr (accès restreint aux membres du CRI)
## SUPPORT
* https://support.isima.fr
* https://dsi.uca.fr/assistance
* https://support.uca.fr
* DIL INP
### CRI
* 7 membres infra / services / support (A115/A109)
* 1 membres dédié projets recherche (F201)
* 1 membres dédié HPC
* 1 membres dédié électronique
## BATIMENTS
## AUTHENTIFICATION
* identifiants UCA
* 1 login
* 1 mot de passe
* à changer
* https://ent.uca.fr/compte/
* RH
* scola
* annuaire synchrone à l'ISIMA/LIMOS
* Active Directory (DC + rodc + OpenLdap synchronisé)
* compte uca pour TOUS les services
* comptes invités locaux
* groupes utilisateurs
* permissions sur les services
* changement de mot de passe via l'ENT UCA immédiat partout
* identifiants UCA pour tous les services UCA / ISIMA / LIMOS
## MAIL
* @isima.fr, @limos.fr
* une seule boite pour 2 alias
* webmail SOGO
* https://mail.isima.fr === https://mail.limos.fr
* agenda
* carnet d'adresse
* possibilité de forward
* @etu.uca.fr
* alias @etu.isima.fr
* @uca.fr
* mail universitaire
* boite distinct de @[isima|limos].fr
* @clermont-auvergne-inp.fr
* pour le personnel INP
* @cnrs.fr
* pour le personnel CNRS
## HOME
* dirs.local.isima.fr
* nfs + kerberos
* monter sur perso.isima.fr
* ssh ucausername@dirs.local.isima.fr
* SEUL CE QUI EST ICI EST EN LIEU SUR!
## FIXE ET LAPTOP
* gérer par le CRI et avec accès au réseau ISIMA/LIMOS
* un fix + un laptop pour les enseignants chercheurs
* un fixe ou un laptop pour les doctorant
* machines perso, téléphone, tablette
* connexion WIFI via https://eduroam.org/
* identifiant UCA
* sous windows
* P:// monte votre home de dirs
* SEUL ENDROIT SUR POUR SAUVER CES DONNEES
* TOUS LES POSTES SONT CHIFFRES
* sans aucune exception fixe et laptop
* possibilité de prêt selon les stocks
## MACHINES PEDA
* PC Triple boot
* Windows
* Kubuntu
* OS exam
* PC spécialisés
* Physique
* Robotique
* Electronique
* Tx
* GONA DIE!
* Accès libre
## ACCES SERVEURS VMS
* ssh
* guacamole
* xRDP
## SERVEURS PEDA
* serveurs UNIX
* ADA / Turing
* shared monte votre home de dirs
* SEUL ENDROIT SUR POUR SAUVER CES DONNEES
* serveurs Windows
* TSE1
* P:// monte votre home de dirs
* SEUL ENDROIT SUR POUR SAUVER CES DONNEES
* résintallables à tout moment
* résintallés le 7 juillet 2023
* AUCUN BACKUP!
## VMs PEDA
* accessible via
* ssh
* lire les messages
* guacamole
* problème de raccourcis clavier
* xRDP
## SERVEURS HPC
* Helene Toussaint
* helen.toussaint@limos.fr
* https://hpc.isima.fr
## SERVICES ISIMA/LIMOS
* https://hedgedoc.isima.fr
* https://guacamole.isima.fr
* https://my.isima.fr
* vpn
* cri (accès aux seuls membres)
* profs (enseignants / chercheurs et administration)
* étudiants
* marche / arrêt de VMs péda
* https://gitlab.isima.fr (péda)
* https://gitlab.limos.fr (recherche)
## SERVICES UCA
## SERVEURS PROJETS
## IMPRESSIONS
## RESEAU
## HYPERVISION
\ No newline at end of file
# vagrant
![vagrant](images/vagrant.png "vagrant")<!-- .element width="30%" -->
**By HashiCorp**
## vagrant
* création / configuration d'environnements virtuels
* écrit en ruby
* [<i class="fa fa-github" aria-hidden="true"></i> hashicorp/vagrant](https://github.com/hashicorp/vagrant)
* [<i class="fa fa-gavel" aria-hidden="true"></i> The MIT License](https://github.com/hashicorp/vagrant/blob/master/LICENSE)
* outil en ligne de commande
## vagrant
* il peut être considéré comme un wrapper d'hyperviseur
* VirtualBox
* libvirt
* VMware
* Amazon EC2
* supporte nativement docker depuis la 1.6
## Installation
pré-requis
VirtualBox (versions 4.0.x, 4.1.x, 4.2.x, 4.3.x, 5.0.x, 5.1.x, 5.2.x)
```
$ sudo apt install virtualbox
```
install via apt (plus distribué via RubyGem)
```
$ sudo apt install vagrant
```
afficher la version de vagrant
```
$ vagrant --version
```
## Initialisation du projet
```
$ mkdir project && cd project
$ vagrant init
```
génère un Vagrantfile
```ruby
Vagrant.configure("2") do |config|
config.vm.box = "base"
end
```
beaucoup de commentaires ... laisser vous guider
## Box
* machines virtuelles préconfigurées (templates)
* mis en cache
* nommage à la github "développeur/Box"
```
$ vagrant box add "ubuntu/xenial64"
$ vagrant box add "http://aka.ms/vagrant-win7-ie11"
$ vagrant box list
$ vagrant box remove "ubuntu/xenial64"
```
* [vagrant cloud](https://app.vagrantup.com/boxes/search)
* [vagrantbox.es](https://www.vagrantbox.es/)
## Creating Box
* [Creating a Base Box](https://www.vagrantup.com/docs/boxes/base.html)
* [<i class="fa fa-github" aria-hidden="true"></i> veewee](https://github.com/jedi4ever/veewee)
* [<i class="fa fa-github" aria-hidden="true"></i> How to Create a CentOS Vagrant Base Box](https://github.com/ckan/ckan/wiki/How-to-Create-a-CentOS-Vagrant-Base-Box)
* [packer by HashiCorp](https://packer.io/)
* [<i class="fa fa-book"></i> Creating windows base images using Packer and Boxstarter](http://www.hurryupandwait.io/blog/creating-windows-base-images-for-virtualbox-and-hyper-v-using-packer-boxstarter-and-vagrant)
* [<i class="fa fa-github"></i> joefitzgerald/packer-windows](https://github.com/joefitzgerald/packer-windows)
## cycle de vie
```
$ vagrant init "ubuntu/bionic64"
$ vagrant up #--provider=virtualbox
$ vagrant provision
$ vagrant ssh
$ vagrant halt
$ vagrant suspend
$ vagrant reload
$ vagrant destroy #--force
```
se voit dans l'hyperviseur utilisé
## réseau
mapping de port
```ruby
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8004
end
```
* [private network](https://www.vagrantup.com/docs/networking/private_network.html)
* [public network](https://www.vagrantup.com/docs/networking/public_network.html)
* on devrait pouvoir accéder à nos ressources locales
* tester un configuration avec ldap/ rodc?
* [<i class="fa fa-gitlab"></i> cri/ansible-playbook-vault](https://gitlab.isima.fr/cri/ansible-playbook-vault)
## vm
```ruby
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.memory = "4096"
end
end
```
## points de montage
montage automatique de `.` dans `/vagrant`
```
$ vagrant ssh
$ ll /vagrant
total 60
drwxr-xr-x 1 vagrant vagrant 4096 Dec 14 19:46 ./
drwxr-xr-x 24 root root 4096 Dec 14 19:47 ../
drwxr-xr-x 1 vagrant vagrant 4096 Dec 14 19:46 .vagrant/
-rw-r--r-- 1 vagrant vagrant 155 Dec 14 19:49 Vagrantfile
-rw------- 1 vagrant vagrant 44198 Dec 14 19:47 ubuntu-bionic-18.04-cloudimg-console.log
```
autre possibilité à partir de `Vagrantfile`
```ruby
Vagrant.configure("2") do |config|
...
config.vm.provision "file", source: "~/.gitconfig", destination: "~/.gitconfig"
...
end
```
## provisioning
via l'entrée standard
```ruby
config.vm.provision "shell", inline: <<-SHELL
sudo apt install -y python openssh-server
SHELL
```
via un script
```ruby
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision "shell", path: "script.sh"
end
```
```ruby
if ENV['VAGRANT_OS']
os = ENV['VAGRANT_OS']
else
os = "ubuntu"
end
```
```ruby
Vagrant.configure("2") do |config|
if os == "centos"
config.vm.box = "centos/7"
else
config.vm.box = "ubuntu/bionic64"
end
```
```ruby
if os == "debian"
config.vm.provision "shell", inline: <<-SHELL
sudo yum install httpd
SHELL
else
config.vm.provision "shell", inline: <<-SHELL
sudo apt install -y apache2
SHELL
end
end
```
## Vagrant VS Docker
[<i class="fa fa-gitlab"></i> vimazeno/reveal-prez](https://gitlab.isima.fr/vimazeno/reveal-prez)
[<i class="fa fa-gitlab"></i> vimazeno/affproj](https://gitlab.isima.fr/vimazeno/affproj)
## provisioning
via [ansible](ansible.html)
```ruby
Vagrant.configure("2") do |config|
config.vm.provision "ansible" do |ansible|
ansible.playbook = "playbook.yml"
ansible.host_key_checking = false
ansible.playbook = "vault.yml"
ansible.extra_vars = { is_vagrant: true }
ansible.tags = ['initialize']
ansible.skip_tags = ["vagrant_context"]
ansible.inventory_path = "./my-inventory"
ansible.raw_arguments = ["--private-key=~/.ssh/id/id_rsa"]
ansible.verbose = "vvv"
end
end
```
[Shared Ansible Options](https://www.vagrantup.com/docs/provisioning/ansible_common.html)
## conclusion
**laissez un `Vagrantfile` dans vos roles [ansible](ansible.html) est toujours une bonne idée!**
* [<i class="fa fa-gitlab"></i> cri/ansible-playbook-vault](https://gitlab.isima.fr/cri/ansible-playbook-vault)
* [<i class="fa fa-gitlab"></i> cri/ansible-playbook-vault/Vagrantfile](https://gitlab.isima.fr/cri/ansible-playbook-vault/blob/master/Vagrantfile)
## Vault en bref!
![vault](../cri/images/vault.png "vault")<!-- .element width="30%" -->
#### Des secrets, des apps, des tokens, des équipes, un séquestre
## Vault
* By HashiCorp
* [écrit en go](https://github.com/hashicorp/hcl)
* cross plateform
* [hcl](https://github.com/hashicorp/hcl)
* intégration avec [consul](https://www.consul.io) & [terraform](https://www.terraform.io/)
* [auditable](https://www.vaultproject.io/docs/commands/audit/enable.html)
* [documenté](https://www.vaultproject.io/docs/)
* ... couteau suisse
## Vault
* Un binaire [vault](https://releases.hashicorp.com/vault/) qui fait
* serveur
* [<i class="fa fa-book" aria-hidden="true"></i> api](https://www.vaultproject.io/api/overview)
* UI web
* cli
```shell
$ export $VAULT_ADDR=https://10.0.0.1
```
## Configuration
`/etc/vault/vault.hcl`
```
backend "file" {
path = "/var/lib/vault"
}
ui = true
disable_mlock = true
listener "tcp" {
address = "10.0.0.1:443"
tls_cert_file = "/etc/certs/vault.crt"
tls_key_file = "/etc/certs/vault.key"
tls_disable = 0
}
```
## initialisation SSS
### Shamir's Secret Sharing
```shell
$ vault operator init -key-shares=3 -key-threshold=2
```
```shell
Unseal Key 1: 6gAO3lmAhIaHzDAdkK256g2B2Dpeqy+z4jqQCJBID3d8
Unseal Key 2: TO7DDRQXSPC3IQylPEBPjPGAGAGMzjEkjT/FL62m7UUd
Unseal Key 3: CYfEbt83jYsQFcSErHT4Y5NCsrEtfFUE6tjQZKfP632K
Initial Root Token: s.78MykQO2b5qcy03rtoNwmhr1
Vault initialized with 3 key shares and a key threshold of 2. Please securely
distribute the key shares printed above. When the Vault is re-sealed,
restarted, or stopped, you must supply at least 2 of these keys to unseal it
before it can start servicing requests.
Vault does not store the generated master key. Without at least 2 key to
reconstruct the master key, Vault will remain permanently sealed!
```
## Authentification
!["authentification"](../cri/images/vault-auth.png "authentification")
## Authentification
par token
```shell
$ vault login token=<root-or-app-token>
```
equivalent à
```shell
$ export VAULT_TOKEN token=<root-or-app-token>
```
par ldap
```shell
$ vault login -method=ldap username=mazenovi
```
stocke le token dans `~/.vault-token` et `$VAULT_TOKEN`
## Policy (ACL)
```
path "cri/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
```
écriture
```shell
$ vault policy write cri `/etc/vault/cri.hcl`
```
application à un groupe ldap
```shell
$ vault write auth/ldap/groups/cri policies=cri
```
création de token à partir de la policy
```shell
$ vault token create -policy=cri
```
## [<i class="fa fa-book" aria-hidden="true"></i> Secrets engines](https://www.vaultproject.io/docs/secrets/)
!["secrets engines"](../cri/images/vault-secrets-engines.png "secrets engines")
## workflow
```shell
$ vault secrets list
$ vault kv list cri/
$ vault kv get cri/test
$ vault kv get -format=json cri/test
$ vault kv get -format=json cri/test | jq .data
$ vault kv get -format=json cri/test | jq .data.data.root
$ vault kv put cri/test password2=$(date | sha256sum)
$ vault kv patch cri/test password1=$(date | sha256sum)
$ vault delete cri/test
```
## avec ansible
* lookup natif [hashi_vault](https://docs.ansible.com/ansible/latest/plugins/lookup/hashi_vault.html)
* lecture uniquement
* pas de support natif pour kv2 à ce jour
* module "community" [hashivault](https://github.com/TerryHowe/ansible-modules-hashivault)
* Reading and Writing
* supporte kv2
* Initialization, Seal, and Unseal
* Policy
* User Management
## UI
!["UI"](../privacy/images/vault/web.png "UI")
!["carnets mots de passe"](../privacy/images/vault/password_management.jpg "carnets mots de passe")<!-- .element width="80%" -->
......@@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>PGP / GPG</title>
<title>my</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
......@@ -12,6 +12,7 @@
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
......@@ -25,7 +26,7 @@
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/ssl.md"
<section data-markdown="md/my.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
......
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>openstack</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/openstack.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>pve</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/pve.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>aws</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/stack.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>terraform</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/terraform.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>users</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/users.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>vagrant</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/vagrant.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>vault</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/vault.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js' },
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
<li><a href="privacy/jnarac.html">jnarac</a> ok</li>
<li><a href="privacy/sovereignty.html">sovereignty</a> ok</li>
<li><a href="privacy/passwords.html">passwords</a></li>
<li><a href="privacy/tracking.html">tracking</a></li>
<li><a href="privacy/tor.html">tor</a></li>
<li><a href="privacy/tails.html">tails</a></li>
<li><a href="privacy/crypto.html">crypto</a>ok</li>
<li><a href="privacy/ssl.html">ssl</a></li>
<li><a href="privacy/pgp.html">pgp</a></li>
<li><a href="privacy/bitcoin.html">bitcoin</a></li>
<h3>projets</h3>
<ul>
<li>
<a href="projets/profan-rgpd.html">Profan RGPD</a>
</li>
</ul>
<h3>privacy</h3>
<ul>
<li>
<a href="privacy/jnarac.html">je n'ai rien &agrave; cacher</a>
<ul>
<li><a href="1337/http.html">http</a></li>
<li><a href="privacy/sovereignty.html">souverainet&eacute;</a></li>
<li><a href="privacy/tracking.html">tracking</a></li>
<li><a href="privacy/passwords.html">mots de passes</a></li>
<li><a href="privacy/crypto.html">crypto</a></li>
<li><a href="privacy/tls.html">tls</a> / <a href="privacy/tls.html#/0/52">https</a></li>
<li><a href="privacy/pgp.html">pgp</a></li>
<li><a href="privacy/TLSvsPGP.html">tls vs PGP</a></li>
<li><a href="privacy/tor.html">tor</a></li>
<li><a href="privacy/tails.html">tails</a></li>
<li><a href="privacy/vault.html">vault</a></li>
<li><a href="privacy/bitcoin.html">bitcoin</a></li>
</ul>
</li>
<li><a href="privacy/surfer_couvert.html">surfer couvert (en bref)</a></li>
<li><a href="privacy/browser.html">s&eacute;curit&eacute; et navigateur</a></li>
</ul>
<h3>1337</h3>
<ul>
<li><a href="1337/sidoine.html">S&eacute;curit&eacute; des applications web</a></li>
</ul>
<ul>
<li>
Architecture
<ul>
<li><a href="1337/http.html">http</a> / <a href="privacy/tls.html#/0/52">https</a></li>
<li><a href="1337/js.html">JS</a></li>
</ul>
</li>
<li>
Pentesting
<ul>
<li><a href="1337/gathering.html">Collecter</a></li>
<li>
<a href="1337/detecting.html">D&eacute;tecter</a>
<ul>
<li><a href="1337/heartbleed.html">Heartbleed</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="1337/authentication.html">Authentification</a></li>
<li>
Vuln&eacute;rabilit&eacute;s communes
<ul>
<li>
<a href="1337/cmdi.html">Command execution</a>
<ul>
<li><a href="1337/shellshock.html">Shellshock</a></li>
</ul>
</li>
<li><a href="1337/upload.html">Upload</a></li>
<li><a href="1337/fi.html">File inclusion</a></li>
<li><a href="1337/xss.html">XSS</a></li>
<li><a href="1337/csrf.html">CSRF</a></li>
<li>
<a href="1337/sqli.html">SQLi</a>
<ul>
<li><a href="1337/drupalgeddon.html">Drupalgeddon</a></li>
</ul>
</li>
</ul>
</li>
<li>
Se prot&eacute;ger
<ul>
<li><a href="1337/top10.html">Top10</a></li>
<li><a href="1337/anticiper.html">Anticiper</a></li>
<li><a href="1337/reagir.html">R&eacute;agir</a></li>
</ul>
</li>
</ul>
<h3>cri</h3>
<ul>
<li><a href="cri/devops.html">devops</a></li>
<li><a href="cri/vagrant.html">vagrant</a></li>
<li><a href="cri/ansible.html">ansible</a></li>
<li><a href="cri/vault.html">vault</a></li>
<li><a href="cri/ansible-role.html">ansible role</a></li>
<li><a href="cri/pve.html">pve</a></li>
<li><a href="cri/terraform.html">terraform</a></li>
<li><a href="cri/stack.html">stack</a></li>
<li><a href="cri/gitlab.html">gitlab</a></li>
<li><a href="cri/my.html">my</a></li>
<li><a href="cri/openstack.html">openstack</a></li>
<li><a href="cri/criprod.html">criprod</a></li>
</ul>
.reveal section img {
border: none;
}
.reveal section h2 {
color: #2A76DD;
text-transform: uppercase;
text-shadow: -2px 4px 0 rgba(0, 0, 0, 0.3), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15);
}
.reveal table {
margin: auto;
border-collapse: collapse;
......@@ -17,3 +24,63 @@
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid;
}
reveal code {
background-color: gray;
}
.fa-circle-check {
color: green;
}
.fa-circle-xmark {
color: red;
}
.fa-bomb {
color: grey;
}
.fa-lightbulb {
color: yellow;
}
.fa-trophy {
color: yellow;
}
.fa-medkit {
color: pink;
}
.fa-triangle-exclamation {
color: orange;
}
.fa-cogs {
color:steelblue;
}
.fa-ice-cream {
color:tomato;
}
.fa-firefox-browser {
color: orange;
}
.fa-bullseye {
color:orangered
}
.fa-book-skull, .fa-screwdriver-wrench {
color: grey;
}
code:not([class]) {
background-color: darkgrey;
border-radius: 5px;
padding: 5px;
font-size: 80%;
color: white;
}
\ No newline at end of file
"use strict";
Reveal.addEventListener( "ready", (event) => {
let user = ''
if(document.location.href.indexOf("?") != -1) {
user = document.location.href.substring(
document.location.href.indexOf("?")+1,
document.location.href.indexOf("#")
);
}
console.log(user);
let as = document.getElementsByTagName("a");
for (let a of as) {
let link = a.href;
if(
a.classList == ''
&& a.href != ''
&& !a.href.includes('javascript:')
) {
//console.log(link);
let url = new URL(link);
if (
url.origin == "http://dv.wa"
&& user != ""
) {
a.href = "http://vm-" + user + ".local.isima.fr" + url.pathname + url.search;
a.innerHTML = "http://vm-" + user + ".local.isima.fr" + url.pathname + url.search;
a.target = "_blank";
}
}
}
for (let code of document.getElementsByTagName("code")) {
if (user != "") {
code.innerHTML = code.innerHTML.replaceAll("dv.wa", "vm-" + user + ".local.isima.fr");
}
}
});
\ No newline at end of file