From ee19e2b84718ed35050d9a6f95cbc70c9786c23a Mon Sep 17 00:00:00 2001 From: Rustam Tagaev Date: Mon, 1 Jun 2020 20:03:41 +0300 Subject: [PATCH 1/2] #new-plugin add a new plugin "vault-switch" --- plugins/vault-switch/README.md | 29 ++++++++++ plugins/vault-switch/example.png | Bin 0 -> 4246 bytes plugins/vault-switch/vault-switch.plugin.zsh | 57 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 plugins/vault-switch/README.md create mode 100644 plugins/vault-switch/example.png create mode 100644 plugins/vault-switch/vault-switch.plugin.zsh diff --git a/plugins/vault-switch/README.md b/plugins/vault-switch/README.md new file mode 100644 index 000000000..7dd07f82d --- /dev/null +++ b/plugins/vault-switch/README.md @@ -0,0 +1,29 @@ +# Vault-switch plugin + +## Description + +This plugin can switch among nodes of Vault - HashiCorp + +## Configuration + +For using a plugin you should add VAULT_NODES to **~/.zshrc** +Variable **VAULT_NODES** must look as + +```bash +VAULT_NODES="node1,https://vault1.example.com,secret_token1;node2,https://vault2.example.com,secret_token2" +``` + +If you want to skip verify checking of ssl then add true to end of the string. + +```bash +VAULT_NODES="node1,https://vault1.example.com,secret_token1,true;node2,https://vault2.example.com,secret_token2" +``` + +Name of a node, address, token are separating comma. Other nodes separate semicolon. +After need to add the name of the plugin to **~/.zshrc** to variable **plugins=(vault-switch)** + +**Example usage:** + +![vault-switch](example.png) + +State of restoring stored in **~/.vault-switch/credentials** diff --git a/plugins/vault-switch/example.png b/plugins/vault-switch/example.png new file mode 100644 index 0000000000000000000000000000000000000000..055b8e534ca2f8fd36ec38bbd9b6cde4090053dd GIT binary patch literal 4246 zcmV;H5NYp;P)erc$8dk)+WxpTH&Es zH#-2h8KZCnvwxf<*XyXpTPe+JWVlSg4|}Wk;gio*OigvcL*aU}=0R}h5KsGValKw& zuh(WA>;c`AU$TL_I06nudxL$BfCqW4bx0)>x8n1Agi?rrF)6LyFCPsdYPsR@ixKDT zs$QyzR4gZJRTji0bG>5rKmQe;|5|vxk3c}C z98o~@(&?nt+GaycAFZj-Jk0-N`lYoCXd?cX#~hCaOPHUxfDj17yBq=A4?<@`w@f?2c?P-RUi2S$BaRB!$G7)KrnTyNGt zJYW9!VhRA}!Fx6=v05%C)2S)v>h0BJIyF%ySsu7rPA1bld-f_%G1K;}*C3cGKghfi z1Uc>BE#Aqfr?aQ;7Vn-9P%c{WP;&D5O?3upf37mh}G`1NMZjUA8dG5rDKcK$ADFE8gz_#a

lNwG%II3O0M2s zdAmEbjVc$Jme6cp>pOIbLRh$Ed(4cR{T!~*v;#S8#X41>qf3(orJ{0xtEm~@bv_ZK< zco%4X=Q~}E zlfOqLJmlw%m^?c0Zq0Ut__}r{^%*CL`D>83aiz^Nw#jbq{QaBo>GasX)^mbsU13%T9w*6qvr&k*q=C||M+AjxyWM7WktF9h zNjBS!teV9Wh{y^^<0RQ`x28I;=5fi{z7=koVP$#vWEOSmCnvhp6oUv8Fe}_!elXlO zx@Dl0k+_N9Z#Mw&i6a!}@bV!-KrD3~pi-F2*|d?DiDAS2kt%-*42MH+;oI#Nr9K9N zltnSYycI-{3w!PzV5jvBskU1-RL+dGZVt zViq;1ViKd_C>4()p`|+G{A>i&q!lU|HyjS79>;i;Af_5usa|MSDk8F&F&T{@W7pn_ z7z3p^{Xi+B5DWlHDNULM{HRim;?NLew37H?{(qsRq1j&-E!TLh0TeYj`$>5|r1P>; z1k8$ftVA44A$U6g5Rl;(2x<6wvmqkMuERh8xFtP6g}m+nV5Z~C>gSrOH3DOgeOAlm zG$287b>=Po4%V!Vtf*UPU7LAw?<3$qsR1gs3ox+?)j+9%QUw)FAOO(Oy55lL4X30+ zR?N+Cy+TC(FnNB5*H`|R-W#Na-b|Xi( zYzJqX&Su`7f273E+6Kyp5R+hLYgjI1oF4#gH4VZ;(qfo$iP07}LD+7$UY)z`c3W~3 zlX45pIlq;6I2@JT7ZXaLpuE1*{7DABKreiH~2*@m`vfO;vgVLbFW9x%}hyzsQ zaAU*&gS{#%LJV2y`kGB(zDG)P)!X_J5K&vhhMj`B(Szb|maj^zM=@MRr`xM^=qt=7 z3XlX0 zLyVq(XiEs4%J`cJdm4*~TFRE1WzWeUI+TSniC?;YRgQrg`@SkPI}EOieO|D0K*VnS zLZ4@ttwG60m(0k@zQjTA8=os^+<@jjtP6bXTb>?Hbm1n&5S~&>3sAZ!lbG5hgimcbZ z*p26C8?y}nSZ_C--1b&t8RO3Tk}fk$FQ!|W(q<4eBRtf!wUcS~Y2#Pe`mwcT`wKaF z_P4*&aegtMOs12`lpjoZU7pW95`P%Zw10W=5*%i*Q|$j%&)|ojg<7hf>ufn_Is2v2 zt{K$Uo}dzPHpCcDK{n&ZNz!=gw?SkhJ3;W+2ONo?jFL0kNc_rcVgqlh@axUm3NNG& z*vNU!^E!leRlpu>?Yw#Kl8v7{18#fBbC=Et?l8Kv@yqU%>v5ORt&tb$yLG&G^636j z*M0!pAp~dtox6v>L!7RSUyswZ@#}GFD9rv!i65if#;@EZR8%<;E{Q57W^P9BtBd<* z;}@zoDDeZIm1lWVV$fMR`(nuZk-QzM-h#w$?(xg_x+Fa0m#>3zUIo&Zh6nxK)l6SE zysP%?`gghM_v**5Mmf%)Zoe0+D@=>8rF@a947XYs-^lj$9=jjEx{|uC$~n|-fBzD{ zC+Eknhr}uR z@vB6M#ILg6%57JvAHOCUBeQ!E^y4?a{Ks{J^7ewA`tdtXiQkTXZ`hCD3CsISaFE+X zS+RW=BcQPL8;=t6Cj;H6AD*X8F%Q<~yOkZpP0{=(FOFspFZ`FMFaBDWyITC&tO(Z9 zU~xtH$|=nshgfr6nwoeQolw12`JwO_saGyCB|C8~#bU+>`|<10 z)=t_f9HWh219<)TLEu);kRLze+||7ix|VI8JlL1va#G5ul8fWK4R`*LS9*4MonMb#An3=hB!p>C z5r3BFmlzy_AHUOqP5u%;epVnwU{|f~Y2OigKYk~T!rI@7pH6F(NEa}7!jB(_yZqW* z>USrw69aEUT7|e=EcWTguM;rg?>+57lK+7kSkHgyTW>huR4>CBoZcJNFnr(%mx28J z*X^x0akKEyt)5+#e>~wJ$!~~P`OKSn8E)5?MOki8LRmuLzrXw4llbXmGNpSODMAF*ryu{m(xDa?$&-wQv4ZuRu~@oQO=_35|= zKYl$b(M00Mr+(EQLNhgE&ceN z4jSKaBy$DaIh+mS{P-OJ2RsbEfABH?v!OfDC!c;+F7ZP=POq*#%24p*=TCArEIi+A z0YE?c#7c#Kyaxb4wEXy$OZ?8yl8-ljKYrk2@~l(q)nsj8nHw@5s(Tw}iGfvlVu;gW zuhq`VdZjUmbLw|Cgqv-F)iWpHK_Iz87Owty4*>enC-}#Ep8k{Rj6dEhC4NkM?@$Oa zd1(v5rdYvlD@DoudbMujtb4y6IHYQ9^Hr-}Z>(S0D{`4P+@6nsh=?B)*3guKxS)c-mv;qSuOIEkB4J0ZjOhH|vi#h5jwk=yLse zNz;fJ&L86B4G?3b-54FV(?#*aFPioMspn=d>biDk+C#<$3__E;4bPY8>K2a}=G+Fm zyKN+A{uO@woRL9Pc9>sF)6>x2n*IKkgn2$slx{odQ0AWdK^;GS*(U(qYynaa&3>E> z!SU+umH3^XC2b^rZd5!%+v&Q@Hk7_Ard{_-p}bxh`(Y ${FILE_CREDENTIALS} + echo "export VAULT_SELECT_NODE=${VAULT_SELECT_NODE}" >> ${FILE_CREDENTIALS} + echo "export VAULT_ADDR=${VAULT_ADDR}" >> ${FILE_CREDENTIALS} + echo "export VAULT_TOKEN=${VAULT_TOKEN}" >> ${FILE_CREDENTIALS} + [[ $VAULT_SKIP_VERIFY ]] && echo "export VAULT_SKIP_VERIFY=true" >> ${FILE_CREDENTIALS} + + _list-nodes + fi + +} + +function vault-switch() { + _get-nodes + [ ! $1 ] && _list-nodes + [ $1 ] && _set-work-node $1 +} From 43079320a29b6d44a7c2a1b7ee47557952880e45 Mon Sep 17 00:00:00 2001 From: Rustam Tagaev Date: Mon, 1 Jun 2020 20:17:41 +0300 Subject: [PATCH 2/2] #new-plugin follow Conventions --- plugins/vault-switch/vault-switch.plugin.zsh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/vault-switch/vault-switch.plugin.zsh b/plugins/vault-switch/vault-switch.plugin.zsh index ca3127f25..42a3a487f 100644 --- a/plugins/vault-switch/vault-switch.plugin.zsh +++ b/plugins/vault-switch/vault-switch.plugin.zsh @@ -3,21 +3,21 @@ add-zsh-hook precmd _restore_cache FILE_CREDENTIALS="${HOME}/.vault-switch/credentials" -function _restore_cache(){ +_restore_cache(){ [ ! -d ${HOME}/.vault-switch ] && mkdir -p ${HOME}/.vault-switch [ ! -f $FILE_CREDENTIALS ] && touch ${FILE_CREDENTIALS} source ${FILE_CREDENTIALS} } -function _get-nodes(){ +_get-nodes(){ IFS=";" read -A NODES <<< ${VAULT_NODES} } -function _set-color(){ +_set-color(){ echo "\e[1;32m$1\e[0m" } -function _list-nodes(){ +_list-nodes(){ INDEX=1 for i in ${NODES[@]} do @@ -29,7 +29,7 @@ function _list-nodes(){ done } -function _set-work-node(){ +_set-work-node(){ if [ $1 -gt ${#NODES[@]} ] then echo "Number of node not found" @@ -50,7 +50,7 @@ function _set-work-node(){ } -function vault-switch() { +vault-switch() { _get-nodes [ ! $1 ] && _list-nodes [ $1 ] && _set-work-node $1