Apprendre VIM en jouant. Les 3 premiers levels sont gratuits, ensuite il faut payer.
Un très bon tutorial de Stéphane Bortzmeyer pour parser du json avec jq
Comment installer debian avec des disques chiffrés sur un serveur dédié Online
Pour utiliser des variables d'environnement au sein de la config nginx:
- avec ngx_http_lua_module:
env API_KEY;
http {
...
server {
location / {
set_by_lua $api_key 'return os.getenv("API_KEY")';
...
}
}
}
- avec ngx_http_perl_module:
env API_KEY;
http {
...
server {
location / {
perl_set $api_key 'sub { return $ENV{"API_KEY"}; }';
...
}
}
}
Une formation (gratuite) sur Kubernetes offerte par la Linux Fondation
Correspondances entre les noms des ressources dans Spinnaker et dans Kubernetes:
- regions (spinnaker) = namespace (k8s)
- accounts (spinnaker) = cluster (k8s)
- clusters (spinnaker) = replicaset (k8s)
- server groups (spinnaker) = deployment (k8s)
- load balancer (spinnaker) = service (k8s)
- security groups (spinnaker) = ingress (k8s)
Attention: au delà des nommages différents, d'autres subtilités existent et sont décrites plus en détails dans l'article.
Pour synchroniser un calendrier Office365 avec Thunderbird et l'extension lightning.
Attention:
J'ai eu des problèmes de connexion à Office365 avec exchangecalendar-v3.9.0.xpi, j'ai du utiliser une version forkée exchangecalendar-3.9.0y.xpi (cf. Can't sync calendar with Office 365 [#588](./add-tag/588))
Pour centraliser les logs des pods dans Cloudwatch Logs avec un cluster Kubernetes provisionné par KOPS:
$ kops edit cluster
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: kops/v1alpha2
kind: Cluster
spec:
...
additionalPolicies:
node: |
[
{
"Effect": "Allow",
"Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
]
master: |
[
{
"Effect": "Allow",
"Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
]
docker:
logDriver: awslogs
logOpt:
- awslogs-region=eu-west-1
- awslogs-group=k8s
...
$ kops update cluster --yes # used only to update additional iam policies
$ kops rolling-update --yes --force # used to recreate every k8s cluster members (docker logdriver and logopt will be added to /etc/sysconfig/docker at the first boot)
Attention les noms des streams de logs dans cloudwatch correspondent aux id des containers, ce n'est pas très pratique...
EDIT: en utilisant cette méthode, les logs ne sont plus accessible via la commande kubectl logs
. Du coup je ne recommande pas cette approche...
- Pour exporter la conf d'un cluster kubernetes provisonné avec kops:
kops get cluster ${CLUSTER_NAME} -o yaml --full > cluster.yml kops get ig nodes -o yaml > nodes.yml kops get ig masters -o yaml > master.yml
- Pour recréer un cluster à partir de cette conf:
cat cluster.yml > cluster_spec.yml echo --- >> cluster_spec.yml cat nodes.yml >> cluster_spec.yml echo --- >> cluster_spec.yml cat master.yml >> cluster_spec.yml kops create -f cluster_spec.yml
route53-kubernetes permet d'automatiser la création d'enregistrement DNS quand on configure son Ingress.
C'est intégré sous forme d'addon à KOPS.
Attention: Après quelques tests, si route53-kubernetes gère bien la création des nouveaux enregistrements DNS, je n'ai pas l'impression qu'il gère la modification ou suppression des enregistrements créés précédemment. Il doit donc falloir faire du ménage manuellement de temps en temps.
A noter qu'il existe aussi ExternalDNS qui semble être la future méthode standard pour manipuler les DNS externes (Route53, Google Cloud DNS, ...) mais qui semble moins mature.
Quand on écrit des config Kubernetes, il faut jongler avec les versions d'api (paramètre apiVersion
dans le yaml) qui diffèrent selon la version de Kubernetes et le type de ressources (principalement v1
, apps/v1
et extensions/v1beta1
).
La documentation de référence de l'API permet (entre autre) de connaître la bonne version à utiliser pour chaque resource.
Rclone permet de synchroniser un répertoire en utilisant un service cloud (S3, Backblaze, Google Drive, Dropbox, SFTP, ...) comme backend.
Rclone supporte également le chiffrement des fichiers.
Le livre de Google qui explique le concept de SRE et comment ils gèrent leur prod est disponible en consultation en ligne
$ source <(kubectl completion bash) # setup autocomplete in bash, bash-completion package should be installed first.
$ source <(kubectl completion zsh) # setup autocomplete in zsh
et plein d'autres tips bien pratiques...
Backblaze B2 propose un storage object cloud 4 à 5 fois moins cher ($0.005/Go/mois) que Amazon S3 et ses équivalent chez Google et Azure.
Tout ceci en ayant une philosophie intéressante (ils conçoivent notamment leur propre design de rack et leur software de gestion d'erreur et mettent une partie de leur travail en open source)
Il est possible d'utiliser Duplicity pour sauvegarder sur le storage de Backblaze.
Attention: Sur Debian Jessie, la version de Duplicity (0.6.24) n'est pas compatible Backblaze, il est nécessaire d'utiliser la version présente dans les backports (sudo apt install -t jessie-backports duplicity
)
Des bonnes pratiques sécurités pour sysadmin présentées par Aeris:
- choisir un OS stable (Debian, FreeBSD, CentOS ou RedHat par ex)
- Reinstaller soit même l'OS quand on est chez un hébergeur (OVH, Online, ...)
- N'installer que le script nécessaire
- Chiffrer le disque sur un desktop/laptop, pas nécessaire sur un serveur
- Suiver les alertes de sécurité et les appliquer
- Filtrer le traffic avec Iptables, y compris à l'intérieur du réseau local (exemples de conf)
- Sécuriser SSH (exemples de conf)
- Activer 2FA (Yubico est recommandé)
- Installer Fail2Ban
- Automatiser les mises à jours de sécurité
- Sécuriser la pile réseau avec sysctl (exemples de conf)
- Sécuriser DNS, Apache/Nginx et smtP/IMAPS/Submission
- Préférer l'isolation avec LXC plutôt que Docker et attention aux nouvelles techno en vogue qui ne sont pas pensé sécurité.
- Utiliser HPKP & Dane/TLSA pour palier les problèmes de sécurité des autorités de certifications
La version audio de la conférence (3H12) est ici: https://confs.imirhil.fr/20170513_root66_securite-admin-sys.ogg
Un scanner de sécurité pour OwnCloud et Nextcloud
Un playbook Ansible à lancer en Post-Install Arch Linux pour avoir une machine fonctionnelle.
Le playbook est optimisé pour les laptops thinkpad mais constitue une bonne base de travail.