SELECT grantee, table_name , privilege_type
FROM information_schema.role_table_grants
WHERE grantee = 'readwrite'
SELECT r.rolname as username,r1.rolname as "role"
FROM pg_catalog.pg_roles r LEFT JOIN pg_catalog.pg_auth_members m
ON (m.member = r.oid)
LEFT JOIN pg_roles r1 ON (m.roleid=r1.oid)
WHERE r.rolcanlogin
ORDER BY 1;
TIL : les ECS scheduled tasks sont en fait trigger par cloudwatch
A faire en superuser:
-- Revoke privileges from 'public' role
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE mydatabase FROM PUBLIC;
-- Create schema
CREATE SCHEMA myschema
-- Read-only role
CREATE ROLE readonly;
GRANT CONNECT ON DATABASE mydatabase TO readonly;
GRANT USAGE ON SCHEMA myschema TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO readonly;
-- Read/write role
CREATE ROLE readwrite;
GRANT CONNECT ON DATABASE mydatabase TO readwrite;
GRANT USAGE, CREATE ON SCHEMA myschema TO readwrite;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA myschema TO readwrite;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA myschema TO readwrite;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT USAGE ON SEQUENCES TO readwrite;
-- Users creation
CREATE USER reporting_user1 WITH PASSWORD 'some_secret_passwd';
CREATE USER reporting_user2 WITH PASSWORD 'some_secret_passwd';
CREATE USER app_user1 WITH PASSWORD 'some_secret_passwd';
CREATE USER app_user2 WITH PASSWORD 'some_secret_passwd';
-- Grant privileges to users
GRANT readonly TO reporting_user1;
GRANT readonly TO reporting_user2;
GRANT readwrite TO app_user1;
GRANT readwrite TO app_user2;
Comment j'ai fait pour me passer de nerdtree?
0,25 vCPU + 0,5GB = 9,010$ (1 month)
voir obsidian "Postgresql pg survival"
Git hook scripts are useful for identifying simple issues before submission to code review. We run our hooks on every commit to automatically point out issues in code such as missing semicolons, trailing whitespace, and debug statements. By pointing these issues out before code review, this allows a code reviewer to focus on the architecture of a change while not wasting time with trivial style nitpicks.
pour binder ctrl tab et shift ctrl tab pour avec next/previous window il faut un peu de bricolage :
Dans iterm on peut créer des bindings :
ctrl + tab --> Send hexa -> 0x01 0x6e
shift ctrl tab --> Send hexa -> 0x01 0x70
Ces codes hexa correspondent à l'enchainement "ctrl+a n" et "ctrl+a p"
(tools utile : showkey -a sur linux)
Most other shells have aliases of this kind (command aliases). However, zsh also has global aliases, which are substituted anywhere on a line. Global aliases can be used to abbreviate frequently-typed usernames, hostnames, etc.
% alias -g me=pfalstad gun=egsirer mjm=maruchck
% who | grep me
pfalstad ttyp0 May 24 03:39 (mickey.Princeton)
pfalstad ttyp5 May 24 03:42 (mickey.Princeton)
% fm gun
Login name: egsirer In real life: Emin Gun Sirer
Directory: /u/egsirer Shell: /bin/sh
Last login Thu May 23 19:05 on ttyq3 from bow.Princeton.ED
New mail received Fri May 24 02:30:28 1991;
unread since Fri May 24 02:30:27 1991
% alias -g phx=phoenix.princeton.edu warc=wuarchive.wustl.edu
% ftp warc
Connected to wuarchive.wustl.edu.
Here are some more interesting uses.
% alias -g M='| more' GF='| fgrep -f ~/.friends'
% who M # pipes the output of who through more
% who GF # see if your friends are on
% w GF # see what your friends are doing
alias -g gp='|grep '
Un service a la put.io pour ceux qui n'ont pas le temps de gérer une seedbox
Un cluster EKS est livré avec un Deployment pour core dns avec 2 replicas
ça suffit pour commencer, mais avec beaucoup de pods qui tournent on a commencé à avoir des erreurs DNS
On a passé le replicas à 5 et tout va mieux, plus d'erreurs
Tips :
start with low request and high limits
observe..
increase request to request what needed in normal processing
lower limits to... what your strategy is. It can be 10% more than request for example or the same than request if you want to be safe
Pas toujours simple de s'y retrouver :
https://github.com/coreos/prometheus-operator
https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus
La différence entre ces deux là est expliqué dans le README : https://github.com/coreos/prometheus-operator#prometheus-operator-vs-kube-prometheus
Ce qu'il faut retenir, c'est que si l'on veut une solution end-to-end de monitoring de son cluster, il faut utiliser kube-prometheus qui installe le prometheus operator et plein d'autres choses. D'après le Readme de kube prometheus, le projet s'utilise comme une lib qui permet de générer des manifests yaml qu'on va ensuite apply.
Le projet a aussi été packagé avec helm. Si on veut custom les manifests, ça a l'air plus facile à utiliser que le jsonnet de kube prometheus :
https://github.com/helm/charts/tree/master/stable/prometheus-operator
current line in top of screen : z<return>
go to next blank line (paragraph) : }
Une alternative à kube2iam qui est apparemment plus secure
pas pratique, mais plus pratique que de recréer la vizualization
This is possible if we go to Settings > Objects > Visualizations. If we edit the required visualization and replace the search ID with updated search and save the visualization object. (I found the search ID is hyphenated word if saved search consists of white spaces in the name.)
un projet similaire à kubetail
à voir ce que ça donne comparé à k9s
Si on a créé un Deployment avec un apply -f en spécifiant le champs replicas et qu'on décide d'enlever ce champs (pour ne plus qu'il soit géré de manière statique mais plutot dynamique avec un HPA par exemple)
Il faut faire attention car le comportement par défaut va définir replicas à 1
Pour éviter ça, avant de apply le Deployment sans le champs replicas, il faut faire un :
kubectl apply edit-last-applied deployment my-deployment
Et supprimer le champs replicas
Pour que ça marche bien il faut que ses CPU requests soient cohérents
Lorsque le HPA (horizontal pod autoscaler) démarre trop de pods, ces pods vont être en pending. Il faut plus de nodes pour les faire tourner.
C'est le but du kubernetes autoscaler qui va reconfigurer l'autoscaling group des nodes pour en ajouter/enlever suivant l'usage
https://eksworkshop.com/scaling/deploy_ca/
Le pod qui fait tourner ça doit avoir les bon droits IAM pour pouvoir modifier l'ASG
voir : https://blog.csanchez.org/2018/11/14/installing-kube2iam-in-aws-kubernetes-eks-cluster/
prometheus uses header host with value = $host:$port ...
Go to Preferences... > Profiles > Keys
Press Load Preset...
Select Natural Text Editing
Filebeat utilise des template de mapping (pour chaque version de filebeat, un nouveau template est créé)
Donc l'index créé tous les jours par filebeat a un mapping qui provient de ce template
Il y a beaucoup de champs défini qui proviennent de la déclaration de tous les modules filebeat (https://github.com/elastic/beats/blob/master/filebeat/module/nginx/access/_meta/fields.yml)
Si on a besoin de déclarer de nouveaux champs, on peut créer son propre template qui va matcher aussi les index filebeat-* et qui va surcharger les templates de filebeat
Alternative : on peut vérifier que le champs n'existe pas déjà dans les champs prédéfini de filebeat. Par exemple le $status de nginx (code retour http) correspond au champs http.response.status_code
Il suffit que le json écrit par nginx ait une clé qui correspond pour le status pour avoir le bon mapping
https://www.elastic.co/guide/en/beats/filebeat/master/configuration-template.html