falkorlib 0.8.9 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +57 -117
- data/README.md +1 -1
- data/binscripts/bootstrap.sh +8 -10
- data/falkorlib.gemspec +12 -12
- data/lib/falkorlib/bootstrap/base.rb +29 -25
- data/lib/falkorlib/bootstrap/latex.rb +7 -2
- data/lib/falkorlib/bootstrap/vagrant.rb +17 -10
- data/lib/falkorlib/common.rb +3 -3
- data/lib/falkorlib/config.rb +3 -3
- data/lib/falkorlib/gem_tasks.rb +1 -1
- data/lib/falkorlib/git_tasks.rb +1 -1
- data/lib/falkorlib/puppet_tasks.rb +1 -1
- data/lib/falkorlib/version.rb +2 -1
- data/spec/falkorlib/bootstrap_latex_spec.rb +6 -5
- data/spec/falkorlib/git_spec.rb +2 -2
- data/spec/falkorlib/gitflow_spec.rb +5 -4
- data/templates/latex/article/_related_works.tex.erb +1 -1
- data/templates/latex/article/biblio.bib.erb +12 -1
- data/templates/latex/article-acm/main.tex.erb +47 -65
- data/templates/latex/article-ieee/main.tex.erb +42 -410
- data/templates/latex/article-llncs/main.tex.erb +30 -18
- data/templates/latex/beamer/.Makefile.local +1 -0
- data/templates/latex/beamer/_content.md.erb +1 -1
- data/templates/latex/beamer/main.tex.erb +24 -11
- data/templates/latex/images/logo_ANSSI.png +0 -0
- data/templates/latex/images/logo_RF.png +0 -0
- data/templates/latex/llncs/llncs.cls +49 -39
- data/templates/latex/llncs/{splncs03.bst → splncs04.bst} +40 -11
- data/templates/vagrant/.gitignore +14 -0
- data/templates/vagrant/Vagrantfile.erb +53 -15
- data/templates/vagrant/vagrant/config.yaml.sample +9 -6
- data/templates/vagrant/vagrant/scripts/bootstrap.sh +32 -14
- metadata +81 -77
- data/templates/latex/images/logo_UL.pdf +0 -0
- data/templates/latex/images/logo_ULHPC.pdf +0 -0
Binary file
|
Binary file
|
@@ -1,4 +1,4 @@
|
|
1
|
-
% LLNCS DOCUMENT CLASS -- version 2.
|
1
|
+
% LLNCS DOCUMENT CLASS -- version 2.21 (12-Jan-2022)
|
2
2
|
% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science
|
3
3
|
%
|
4
4
|
%%
|
@@ -19,7 +19,7 @@
|
|
19
19
|
%% Right brace \} Tilde \~}
|
20
20
|
%%
|
21
21
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
22
|
-
\ProvidesClass{llncs}[
|
22
|
+
\ProvidesClass{llncs}[2022/01/12 v2.21
|
23
23
|
^^J LaTeX document class for Lecture Notes in Computer Science]
|
24
24
|
% Options
|
25
25
|
\let\if@envcntreset\iffalse
|
@@ -77,40 +77,40 @@
|
|
77
77
|
\fi}
|
78
78
|
%
|
79
79
|
\def\switcht@albion{%
|
80
|
-
\def\abstractname{Abstract.}
|
81
|
-
\def\ackname{Acknowledgement.}
|
82
|
-
\def\andname{and}
|
83
|
-
\def\lastandname{\unskip, and}
|
84
|
-
\def\appendixname{Appendix}
|
85
|
-
\def\chaptername{Chapter}
|
86
|
-
\def\claimname{Claim}
|
87
|
-
\def\conjecturename{Conjecture}
|
88
|
-
\def\contentsname{Table of Contents}
|
89
|
-
\def\corollaryname{Corollary}
|
90
|
-
\def\definitionname{Definition}
|
91
|
-
\def\examplename{Example}
|
92
|
-
\def\exercisename{Exercise}
|
93
|
-
\def\figurename{Fig.}
|
94
|
-
\def\keywordname{{\bf Keywords:}}
|
95
|
-
\def\indexname{Index}
|
96
|
-
\def\lemmaname{Lemma}
|
97
|
-
\def\contriblistname{List of Contributors}
|
98
|
-
\def\listfigurename{List of Figures}
|
99
|
-
\def\listtablename{List of Tables}
|
100
|
-
\def\mailname{{\it Correspondence to\/}:}
|
101
|
-
\def\noteaddname{Note added in proof}
|
102
|
-
\def\notename{Note}
|
103
|
-
\def\partname{Part}
|
104
|
-
\def\problemname{Problem}
|
105
|
-
\def\proofname{Proof}
|
106
|
-
\def\propertyname{Property}
|
107
|
-
\def\propositionname{Proposition}
|
108
|
-
\def\questionname{Question}
|
109
|
-
\def\remarkname{Remark}
|
110
|
-
\def\seename{see}
|
111
|
-
\def\solutionname{Solution}
|
112
|
-
\def\subclassname{{\it Subject Classifications\/}:}
|
113
|
-
\def\tablename{Table}
|
80
|
+
\def\abstractname{Abstract.}
|
81
|
+
\def\ackname{Acknowledgement.}
|
82
|
+
\def\andname{and}
|
83
|
+
\def\lastandname{\unskip, and}
|
84
|
+
\def\appendixname{Appendix}
|
85
|
+
\def\chaptername{Chapter}
|
86
|
+
\def\claimname{Claim}
|
87
|
+
\def\conjecturename{Conjecture}
|
88
|
+
\def\contentsname{Table of Contents}
|
89
|
+
\def\corollaryname{Corollary}
|
90
|
+
\def\definitionname{Definition}
|
91
|
+
\def\examplename{Example}
|
92
|
+
\def\exercisename{Exercise}
|
93
|
+
\def\figurename{Fig.}
|
94
|
+
\def\keywordname{{\bf Keywords:}}
|
95
|
+
\def\indexname{Index}
|
96
|
+
\def\lemmaname{Lemma}
|
97
|
+
\def\contriblistname{List of Contributors}
|
98
|
+
\def\listfigurename{List of Figures}
|
99
|
+
\def\listtablename{List of Tables}
|
100
|
+
\def\mailname{{\it Correspondence to\/}:}
|
101
|
+
\def\noteaddname{Note added in proof}
|
102
|
+
\def\notename{Note}
|
103
|
+
\def\partname{Part}
|
104
|
+
\def\problemname{Problem}
|
105
|
+
\def\proofname{Proof}
|
106
|
+
\def\propertyname{Property}
|
107
|
+
\def\propositionname{Proposition}
|
108
|
+
\def\questionname{Question}
|
109
|
+
\def\remarkname{Remark}
|
110
|
+
\def\seename{see}
|
111
|
+
\def\solutionname{Solution}
|
112
|
+
\def\subclassname{{\it Subject Classifications\/}:}
|
113
|
+
\def\tablename{Table}
|
114
114
|
\def\theoremname{Theorem}}
|
115
115
|
\switcht@albion
|
116
116
|
% Names of theorem like environments are already defined
|
@@ -875,8 +875,10 @@ to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
|
|
875
875
|
\or \ddagger\ddagger \else\@ctrerr\fi}}
|
876
876
|
|
877
877
|
\def\inst#1{\unskip$^{#1}$}
|
878
|
+
\def\orcidID#1{\unskip$^{[#1]}$} % added MR 2018-03-10
|
878
879
|
\def\fnmsep{\unskip$^,$}
|
879
880
|
\def\email#1{{\tt#1}}
|
881
|
+
|
880
882
|
\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}%
|
881
883
|
\@ifpackageloaded{babel}{%
|
882
884
|
\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}%
|
@@ -884,8 +886,12 @@ to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
|
|
884
886
|
\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}%
|
885
887
|
\@ifundefined{extrasngerman}{}{\addto\extrasngerman{\switcht@deutsch}}%
|
886
888
|
}{\switcht@@therlang}%
|
887
|
-
\providecommand{\keywords}[1]{\
|
889
|
+
\providecommand{\keywords}[1]{\def\and{{\textperiodcentered} }%
|
890
|
+
\par\addvspace\baselineskip
|
888
891
|
\noindent\keywordname\enspace\ignorespaces#1}%
|
892
|
+
\@ifpackageloaded{hyperref}{%
|
893
|
+
\def\doi#1{\href{https://doi.org/\detokenize{#1}}{\url{https://doi.org/#1}}}}{
|
894
|
+
\def\doi#1{https://doi.org/\detokenize{#1}}}
|
889
895
|
}
|
890
896
|
\def\homedir{\~{ }}
|
891
897
|
|
@@ -946,6 +952,8 @@ to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
|
|
946
952
|
%
|
947
953
|
\if!\the\tocauthor!\relax
|
948
954
|
{\def\and{\noexpand\protect\noexpand\and}%
|
955
|
+
\def\inst##1{}% added MR 2017-09-20 to remove inst numbers from the TOC
|
956
|
+
\def\orcidID##1{}% added MR 2017-09-20 to remove ORCID ids from the TOC
|
949
957
|
\protected@xdef\toc@uthor{\@author}}%
|
950
958
|
\else
|
951
959
|
\def\\{\noexpand\protect\noexpand\newline}%
|
@@ -961,7 +969,9 @@ to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
|
|
961
969
|
\else
|
962
970
|
\edef\@author{\the\authorrunning}%
|
963
971
|
\fi
|
964
|
-
\global\setbox\authrun=\hbox{\
|
972
|
+
\global\setbox\authrun=\hbox{\def\inst##1{}% added MR 2017-09-20 to remove inst numbers from the runninghead
|
973
|
+
\def\orcidID##1{}% added MR 2017-09-20 to remove ORCID ids from the runninghead
|
974
|
+
\small\unboldmath\@author\unskip}%
|
965
975
|
\ifdim\wd\authrun>\instindent
|
966
976
|
\typeout{Names of authors too long for running head. Please supply}%
|
967
977
|
\typeout{a shorter form with \string\authorrunning\space prior to
|
@@ -1063,7 +1073,7 @@ to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
|
|
1063
1073
|
\global\@namedef{end#1}{\@endtheorem}}}}
|
1064
1074
|
|
1065
1075
|
\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@
|
1066
|
-
\refstepcounter{#1}
|
1076
|
+
\refstepcounter{#1}%
|
1067
1077
|
\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}}
|
1068
1078
|
|
1069
1079
|
\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}%
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%% BibTeX bibliography style `
|
1
|
+
%% BibTeX bibliography style `splncs04'
|
2
2
|
%%
|
3
3
|
%% BibTeX bibliography style for use with numbered references in
|
4
4
|
%% Springer Verlag's "Lecture Notes in Computer Science" series.
|
@@ -31,6 +31,7 @@
|
|
31
31
|
%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle)
|
32
32
|
%% - Removed a \newblock to avoid long spaces between title and "In: ..."
|
33
33
|
%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label
|
34
|
+
%% - Added doi
|
34
35
|
%% ================================================================================================
|
35
36
|
%% This was file `titto.bst',
|
36
37
|
%% generated with the docstrip utility.
|
@@ -73,6 +74,7 @@ ENTRY
|
|
73
74
|
author
|
74
75
|
booktitle
|
75
76
|
chapter
|
77
|
+
doi
|
76
78
|
edition
|
77
79
|
editor
|
78
80
|
eid
|
@@ -243,8 +245,15 @@ FUNCTION {field.or.null}
|
|
243
245
|
}
|
244
246
|
FUNCTION {emphasize}
|
245
247
|
{ skip$ }
|
248
|
+
|
249
|
+
FUNCTION {embolden}
|
250
|
+
{ duplicate$ empty$
|
251
|
+
{ pop$ "" }
|
252
|
+
{ "\textbf{" swap$ * "}" * }
|
253
|
+
if$
|
254
|
+
}
|
246
255
|
FUNCTION {tie.or.space.prefix}
|
247
|
-
{ duplicate$ text.length$ #
|
256
|
+
{ duplicate$ text.length$ #5 <
|
248
257
|
{ "~" }
|
249
258
|
{ " " }
|
250
259
|
if$
|
@@ -436,6 +445,14 @@ FUNCTION {format.url}
|
|
436
445
|
if$
|
437
446
|
}
|
438
447
|
|
448
|
+
FUNCTION {format.doi} % added in splncs04.bst
|
449
|
+
{ doi empty$
|
450
|
+
{ "" }
|
451
|
+
{ after.block 'output.state :=
|
452
|
+
"\doi{" doi * "}" * }
|
453
|
+
if$
|
454
|
+
}
|
455
|
+
|
439
456
|
INTEGERS { nameptr namesleft numnames }
|
440
457
|
|
441
458
|
|
@@ -768,17 +785,17 @@ FUNCTION {format.journal.eid}
|
|
768
785
|
if$
|
769
786
|
}
|
770
787
|
FUNCTION {format.vol.num.pages} % this function is used only for journal entries
|
771
|
-
{ volume field.or.null
|
788
|
+
{ volume field.or.null embolden
|
772
789
|
duplicate$ empty$ 'skip$
|
773
790
|
{
|
774
|
-
%
|
775
|
-
|
776
|
-
%
|
777
|
-
%
|
778
|
-
%
|
791
|
+
% bbl.volume swap$ tie.or.space.prefix
|
792
|
+
titto.bbl.volume swap$ titto.space.prefix
|
793
|
+
% rationale for the change above: for journals you don't want "vol." label
|
794
|
+
% hence it does not make sense to attach the journal number to the label when
|
795
|
+
% it is short
|
779
796
|
"volume" bibinfo.check
|
780
797
|
* *
|
781
|
-
|
798
|
+
}
|
782
799
|
if$
|
783
800
|
number "number" bibinfo.check duplicate$ empty$ 'skip$
|
784
801
|
{
|
@@ -1006,6 +1023,7 @@ FUNCTION {article}
|
|
1006
1023
|
}
|
1007
1024
|
if$
|
1008
1025
|
% new.block
|
1026
|
+
format.doi output
|
1009
1027
|
format.url output
|
1010
1028
|
% new.block
|
1011
1029
|
format.note output
|
@@ -1042,6 +1060,7 @@ FUNCTION {book}
|
|
1042
1060
|
format.edition output
|
1043
1061
|
format.date "year" output.check
|
1044
1062
|
% new.block
|
1063
|
+
format.doi output
|
1045
1064
|
format.url output
|
1046
1065
|
% new.block
|
1047
1066
|
format.note output
|
@@ -1058,6 +1077,7 @@ FUNCTION {booklet}
|
|
1058
1077
|
address "address" bibinfo.check output
|
1059
1078
|
format.date output
|
1060
1079
|
% new.block
|
1080
|
+
format.doi output
|
1061
1081
|
format.url output
|
1062
1082
|
% new.block
|
1063
1083
|
format.note output
|
@@ -1098,6 +1118,7 @@ FUNCTION {inbook}
|
|
1098
1118
|
format.edition output
|
1099
1119
|
format.date "year" output.check
|
1100
1120
|
% new.block
|
1121
|
+
format.doi output
|
1101
1122
|
format.url output
|
1102
1123
|
% new.block
|
1103
1124
|
format.note output
|
@@ -1126,6 +1147,7 @@ FUNCTION {incollection}
|
|
1126
1147
|
}
|
1127
1148
|
if$
|
1128
1149
|
% new.block
|
1150
|
+
format.doi output
|
1129
1151
|
format.url output
|
1130
1152
|
% new.block
|
1131
1153
|
format.note output
|
@@ -1158,6 +1180,7 @@ FUNCTION {inproceedings}
|
|
1158
1180
|
}
|
1159
1181
|
if$
|
1160
1182
|
% new.block
|
1183
|
+
format.doi output
|
1161
1184
|
format.url output
|
1162
1185
|
% new.block
|
1163
1186
|
format.note output
|
@@ -1197,6 +1220,7 @@ FUNCTION {manual}
|
|
1197
1220
|
format.edition output
|
1198
1221
|
format.date output
|
1199
1222
|
% new.block
|
1223
|
+
format.doi output
|
1200
1224
|
format.url output
|
1201
1225
|
% new.block
|
1202
1226
|
format.note output
|
@@ -1216,6 +1240,7 @@ FUNCTION {mastersthesis}
|
|
1216
1240
|
address "address" bibinfo.check output
|
1217
1241
|
format.date "year" output.check
|
1218
1242
|
% new.block
|
1243
|
+
format.doi output
|
1219
1244
|
format.url output
|
1220
1245
|
% new.block
|
1221
1246
|
format.note output
|
@@ -1232,6 +1257,7 @@ FUNCTION {misc}
|
|
1232
1257
|
howpublished "howpublished" bibinfo.check output
|
1233
1258
|
format.date output
|
1234
1259
|
% new.block
|
1260
|
+
format.doi output
|
1235
1261
|
format.url output
|
1236
1262
|
% new.block
|
1237
1263
|
format.note output
|
@@ -1251,6 +1277,7 @@ FUNCTION {phdthesis}
|
|
1251
1277
|
address "address" bibinfo.check output
|
1252
1278
|
format.date "year" output.check
|
1253
1279
|
% new.block
|
1280
|
+
format.doi output
|
1254
1281
|
format.url output
|
1255
1282
|
% new.block
|
1256
1283
|
format.note output
|
@@ -1294,6 +1321,7 @@ FUNCTION {proceedings}
|
|
1294
1321
|
if$
|
1295
1322
|
format.date "year" output.check
|
1296
1323
|
% new.block
|
1324
|
+
format.doi output
|
1297
1325
|
format.url output
|
1298
1326
|
% new.block
|
1299
1327
|
format.note output
|
@@ -1313,6 +1341,7 @@ FUNCTION {techreport}
|
|
1313
1341
|
address "address" bibinfo.check output
|
1314
1342
|
format.date "year" output.check
|
1315
1343
|
% new.block
|
1344
|
+
format.doi output
|
1316
1345
|
format.url output
|
1317
1346
|
% new.block
|
1318
1347
|
format.note output
|
@@ -1503,6 +1532,8 @@ FUNCTION {begin.bib}
|
|
1503
1532
|
write$ newline$
|
1504
1533
|
"\providecommand{\urlprefix}{URL }"
|
1505
1534
|
write$ newline$
|
1535
|
+
"\providecommand{\doi}[1]{https://doi.org/#1}"
|
1536
|
+
write$ newline$
|
1506
1537
|
}
|
1507
1538
|
EXECUTE {begin.bib}
|
1508
1539
|
EXECUTE {init.state.consts}
|
@@ -1515,5 +1546,3 @@ EXECUTE {end.bib}
|
|
1515
1546
|
%% End of customized bst file
|
1516
1547
|
%%
|
1517
1548
|
%% End of file `titto.bst'.
|
1518
|
-
|
1519
|
-
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Created by https://www.toptal.com/developers/gitignore/api/vagrant
|
2
|
+
# Edit at https://www.toptal.com/developers/gitignore?templates=vagrant
|
3
|
+
|
4
|
+
### Vagrant ###
|
5
|
+
# General
|
6
|
+
.vagrant/
|
7
|
+
|
8
|
+
# Log files (if you are creating logs in debug mode, uncomment this)
|
9
|
+
# *.log
|
10
|
+
|
11
|
+
### Vagrant Patch ###
|
12
|
+
*.box
|
13
|
+
|
14
|
+
# End of https://www.toptal.com/developers/gitignore/api/vagrant
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- mode: ruby -*-
|
2
2
|
# vi: set ft=ruby :
|
3
|
-
# Time-stamp: <Mon
|
3
|
+
# Time-stamp: <Mon 2023-12-04 17:12 svarrette>
|
4
4
|
###########################################################################################
|
5
5
|
# __ __ _ __ _ _
|
6
6
|
# \ \ / /_ _ __ _ _ __ __ _ _ __ | |_ / _(_) | ___
|
@@ -25,7 +25,7 @@ require 'erb'
|
|
25
25
|
[ 'vagrant-hosts',
|
26
26
|
'vagrant-vbguest',
|
27
27
|
'vagrant-cachier',
|
28
|
-
|
28
|
+
'vagrant-libvirt',
|
29
29
|
'deep_merge',
|
30
30
|
'terminal-table' ].each do |plugin|
|
31
31
|
abort "Install the '#{plugin}' plugin with 'vagrant plugin install #{plugin}'" unless Vagrant.has_plugin?("#{plugin}")
|
@@ -53,9 +53,10 @@ DEFAULT_SETTINGS = {
|
|
53
53
|
# Default images settings
|
54
54
|
:defaults => {
|
55
55
|
:os => :<%= config[:os] %>,
|
56
|
+
:provider => :<%= config[:provider] %>,
|
56
57
|
:ram => <%= config[:ram] %>,
|
57
58
|
:vcpus => <%= config[:vcpus] %>,
|
58
|
-
:vbguest_auto_update =>
|
59
|
+
:vbguest_auto_update => false,
|
59
60
|
:role => 'default',
|
60
61
|
# :nodes => 1,
|
61
62
|
},
|
@@ -66,10 +67,18 @@ DEFAULT_SETTINGS = {
|
|
66
67
|
},
|
67
68
|
# Default Boxes
|
68
69
|
:boxes => {
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
72
|
-
:
|
70
|
+
:debian12 => '<%= config[:boxes][:debian12] %>',
|
71
|
+
:debian12_uefi => '<%= config[:boxes][:debian12_uefi] %>',
|
72
|
+
:almalinux9 => '<%= config[:boxes][:almalinux9] %>',
|
73
|
+
:almalinux8 => '<%= config[:boxes][:almalinux8] %>',
|
74
|
+
:almalinux8_uefi => '<%= config[:boxes][:almalinux8_uefi] %>',
|
75
|
+
:rockylinux8 => '<%= config[:boxes][:rockylinux8] %>',
|
76
|
+
:centosstream9 => '<%= config[:boxes][:centosstream9] %>',
|
77
|
+
:centosstream8 => '<%= config[:boxes][:centosstream8] %>',
|
78
|
+
:ubuntu22 => '<%= config[:boxes][:ubuntu22] %>',
|
79
|
+
:ubuntu20 => '<%= config[:boxes][:ubuntu20] %>',
|
80
|
+
:fedora38 => '<%= config[:boxes][:fedora38] %>',
|
81
|
+
:archlinux => '<%= config[:boxes][:archlinux] %>'
|
73
82
|
},
|
74
83
|
# virtual images to deploy
|
75
84
|
# <name>:
|
@@ -126,18 +135,21 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
126
135
|
# set auto_update to false, if you do NOT want to check the correct
|
127
136
|
# additions version when booting these boxes
|
128
137
|
config.vbguest.auto_update = defaults[:vbguest_auto_update]
|
138
|
+
config.vbguest.installer_options = { allow_kernel_upgrade: true }
|
139
|
+
|
129
140
|
end
|
130
141
|
|
131
142
|
# Shell provisioner, to bootstrap each box with the minimal settings/packages
|
132
143
|
DEFAULT_PROVISIONING_SCRIPTS.each do |script|
|
133
144
|
config.vm.provision "shell", path: "#{script}", keep_color: true
|
134
145
|
end
|
135
|
-
|
146
|
+
|
147
|
+
# config.vm.synced_folder ".", "/vagrant", type: "virtualbox" # done by default
|
136
148
|
## Uncomment the below part if you want and additional shared directory
|
137
149
|
# config.vm.synced_folder "vagrant/shared", "/shared", mount_options: ['dmode=777','fmode=777'],
|
138
150
|
# type: "virtualbox" # Shared directory for users
|
139
151
|
if Dir.exist?(File.join(TOP_PUPPETDIR, 'hieradata'))
|
140
|
-
config.vm.synced_folder "#{puppet_dir}/hieradata", "/tmp/vagrant-puppet/hieradata"
|
152
|
+
config.vm.synced_folder "#{puppet_dir}/hieradata", "/tmp/vagrant-puppet/hieradata" #, type: "virtualbox"
|
141
153
|
end
|
142
154
|
|
143
155
|
# network settings
|
@@ -161,12 +173,14 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
161
173
|
boxname = defaults[:os].to_s.downcase.gsub(/([^\d]+)(\d+)/, '\\1-\\2')
|
162
174
|
name = boxname if name == 'default'
|
163
175
|
os = node[:os] ? node[:os].to_sym : defaults[:os].to_sym
|
176
|
+
provider = (os =~ /_uefi$/)? 'libvirt' : defaults[:provider]
|
177
|
+
provider = node[:provider] if node[:provider]
|
164
178
|
ram = node[:ram] ? node[:ram] : defaults[:ram]
|
165
179
|
vcpus = node[:vcpus] ? node[:vcpus] : defaults[:vcpus]
|
166
180
|
role = node[:role] ? node[:role] : 'default'
|
167
181
|
desc = node[:desc] ? node[:desc] : 'n/a'
|
168
182
|
puppet_modules = node[:puppet_modules] ? node[:puppet_modules] : []
|
169
|
-
|
183
|
+
warn "provider: #{provider}"
|
170
184
|
abort "Non-existing box OS '#{os}' for the VM '#{name}'" if settings[:boxes][os.to_sym].nil?
|
171
185
|
abort "Empty IP address range" if ip_range.empty?
|
172
186
|
ip = ip_range[ ip_index.to_i ].to_s
|
@@ -175,13 +189,36 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
175
189
|
config.vm.define "#{name}" do |c|
|
176
190
|
c.vm.box = settings[:boxes][os.to_sym]
|
177
191
|
c.vm.hostname = "#{fqdn}"
|
178
|
-
c.vm.network
|
192
|
+
c.vm.network :private_network,
|
193
|
+
:ip => ip,
|
194
|
+
:libvirt__network_address => network[:range], # ip_range[0].to_s + '/24',
|
195
|
+
:libvirt__forward_mode => 'nat'
|
196
|
+
|
179
197
|
c.vm.provision :hosts, :sync_hosts => true
|
198
|
+
# (eventually) Force default provider
|
199
|
+
c.vm.provider :"#{provider}" if provider != 'virtualbox'
|
180
200
|
|
181
|
-
|
201
|
+
# Custom VM configs for virtualbox provider
|
202
|
+
c.vm.provider 'virtualbox' do |v|
|
182
203
|
v.customize [ 'modifyvm', :id, '--name', hostname, '--memory', ram.to_s ]
|
183
204
|
v.customize [ 'modifyvm', :id, '--cpus', vcpus.to_s ] if vcpus.to_i > 1
|
184
205
|
#v.customize [ 'setextradata', :id, 'VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root', '1']
|
206
|
+
v.customize ["modifyvm", :id, "--firmware", "efi"]
|
207
|
+
end
|
208
|
+
# Custom VM configs for libvirt provider
|
209
|
+
# see https://vagrant-libvirt.github.io/vagrant-libvirt/configuration.html
|
210
|
+
c.vm.provider :libvirt do |lv|
|
211
|
+
lv.uri = 'qemu:///system'
|
212
|
+
lv.host = hostname
|
213
|
+
lv.cpus = vcpus
|
214
|
+
lv.memory = ram
|
215
|
+
# lv.nested = true
|
216
|
+
|
217
|
+
# Emulated TPM
|
218
|
+
lv.tpm_model = "tpm-crb"
|
219
|
+
lv.tpm_type = "emulator"
|
220
|
+
lv.tpm_version = "2.0"
|
221
|
+
|
185
222
|
end
|
186
223
|
|
187
224
|
# role specialization
|
@@ -201,8 +238,9 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
201
238
|
end
|
202
239
|
|
203
240
|
# A role fact MUST be defined (default: 'default') as it is used in Hiera config
|
241
|
+
facts_dir = '/etc/facter/facts.d/'
|
204
242
|
c.vm.provision "shell",
|
205
|
-
inline: "echo '{ \"role\": \"#{role}\" }' > /
|
243
|
+
inline: "mkdir -p #{facts_dir}; echo '{ \"role\": \"#{role}\" }' > #{facts_dir}/custom.json",
|
206
244
|
keep_color: true
|
207
245
|
################ Puppet install ##############
|
208
246
|
c.vm.provision "puppet" do |puppet|
|
@@ -222,14 +260,14 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
222
260
|
|
223
261
|
__table[:rows] << [ name, fqdn, os.to_sym, "#{vcpus}/#{ram}", role, desc, ip]
|
224
262
|
|
225
|
-
if settings[:vms].keys.last == name
|
263
|
+
#if settings[:vms].keys.last == name
|
226
264
|
c.trigger.after :up do |trigger|
|
227
265
|
trigger.info = (Terminal::Table.new __table).to_s
|
228
266
|
trigger.warn = <<-EOF
|
229
267
|
- Virtual Vagrant infrastructure successfully deployed!
|
230
268
|
EOF
|
231
269
|
end
|
232
|
-
end
|
270
|
+
#end
|
233
271
|
|
234
272
|
end # config.vm.define
|
235
273
|
end # settings
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- mode: yaml; -*-
|
2
|
-
# Time-stamp: <Sat
|
2
|
+
# Time-stamp: <Sat 2023-11-18 16:59 svarrette>
|
3
3
|
################################################################################
|
4
4
|
# Complementary configuration for Vagrant
|
5
5
|
# You can overwrite here the default settings defined in ../Vagrantfile and
|
@@ -11,15 +11,18 @@
|
|
11
11
|
# Format:
|
12
12
|
# :<os><version>: <username>/<box> # see https://vagrantcloud.com
|
13
13
|
# :boxes:
|
14
|
-
# :
|
15
|
-
# :
|
16
|
-
# :
|
17
|
-
# :
|
14
|
+
# :debian12: 'debian/bookworm64'
|
15
|
+
# :rockylinux9: 'rockylinux/9'
|
16
|
+
# :rockylinux8: 'rockylinux/8'
|
17
|
+
# :ubuntu22: 'ubuntu/jammy64'
|
18
|
+
# :ubuntu20: 'ubuntu/focal64'
|
19
|
+
# :fedora38: 'generic/fedora38'
|
20
|
+
# :archlinux: 'archlinux/archlinux'
|
18
21
|
|
19
22
|
#_________________
|
20
23
|
# Default settings
|
21
24
|
# :defaults:
|
22
|
-
# :os: :
|
25
|
+
# :os: :debian12 # Default OS from the above box definition
|
23
26
|
# :ram: 512 # Default RAM
|
24
27
|
# :vcpus: 1 # Default number of virtual CPUs
|
25
28
|
# :vbguest_auto_update: 1 # check/update box guest additions
|
@@ -1,13 +1,13 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
|
-
# Time-stamp: <
|
2
|
+
# Time-stamp: <Mon 2023-12-04 17:51 svarrette>
|
3
3
|
###########################################################################################
|
4
4
|
# __ __ _ ____ _ _
|
5
5
|
# \ \ / /_ _ __ _ _ __ __ _ _ __ | |_ | __ ) ___ ___ | |_ ___| |_ _ __ __ _ _ __
|
6
|
-
# \ \ / / _` |/ _` | '__/ _` | '_ \| __| | _ \ / _ \ / _ \| __/ __| __| '__/ _` | '_ \
|
7
|
-
|
6
|
+
# \ \ / / _` |/ _` | '__/ _` | '_ \| __| | _ \ / _ \ / _ \| __/ __| __| '__/ _` | '_ \ .
|
7
|
+
# \ V / (_| | (_| | | | (_| | | | | |_ | |_) | (_) | (_) | |_\__ \ |_| | | (_| | |_) |
|
8
8
|
# \_/ \__,_|\__, |_| \__,_|_| |_|\__| |____/ \___/ \___/ \__|___/\__|_| \__,_| .__/
|
9
9
|
# |___/ |_|
|
10
|
-
# Copyright (c) 2017-
|
10
|
+
# Copyright (c) 2017-2023 Sebastien Varrette
|
11
11
|
###########################################################################################
|
12
12
|
# (prefered) way to see a Vagrant box configured.
|
13
13
|
#
|
@@ -26,12 +26,12 @@ SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
26
26
|
MOTD="/etc/motd"
|
27
27
|
DOTFILES_DIR='/etc/dotfiles.d'
|
28
28
|
DOTFILES_URL='https://github.com/ULHPC/dotfiles.git'
|
29
|
-
EXTRA_PACKAGES=
|
29
|
+
EXTRA_PACKAGES='swtpm swtpm-tools'
|
30
30
|
|
31
31
|
TITLE=$(hostname -s)
|
32
32
|
|
33
33
|
# List of default packages to install
|
34
|
-
COMMON_DEFAULT_PACKAGES="ruby wget figlet git screen bash-completion rsync vim htop net-tools
|
34
|
+
COMMON_DEFAULT_PACKAGES="ruby wget figlet git screen bash-completion rsync vim htop net-tools"
|
35
35
|
|
36
36
|
######
|
37
37
|
# Print information in the following form: '[$2] $1' ($2=INFO if not submitted)
|
@@ -67,6 +67,15 @@ setup_redhat() {
|
|
67
67
|
touch /etc/sysconfig/bash-prompt-screen
|
68
68
|
chmod +x /etc/sysconfig/bash-prompt-screen
|
69
69
|
|
70
|
+
if [ -x "/usr/bin/crb" ]; then
|
71
|
+
info "Enable CodeReady Builder (CRB) repository"
|
72
|
+
/usr/bin/crb enable
|
73
|
+
fi
|
74
|
+
|
75
|
+
if ! grep -e "fastestmirror" /etc/dnf/dnf.conf; then
|
76
|
+
echo "fastestmirror=1" >> /etc/dnf/dnf.conf
|
77
|
+
fi
|
78
|
+
|
70
79
|
info "Running yum update"
|
71
80
|
yum update -y >/dev/null
|
72
81
|
|
@@ -81,17 +90,24 @@ setup_redhat() {
|
|
81
90
|
os_version=$(rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release))
|
82
91
|
info "Adding Puppet Labs repo and installing Puppet for RHEL/CentOS ${os_version}"
|
83
92
|
# Get the major version
|
84
|
-
yum install -y https://yum.puppetlabs.com/
|
93
|
+
yum install -y https://yum.puppetlabs.com/puppet7-release-el-$(echo $os_version | cut -d '.' -f 1).noarch.rpm
|
85
94
|
yum install -y puppet
|
86
95
|
}
|
87
96
|
|
88
97
|
setup_apt() {
|
98
|
+
export DEBIAN_FRONTEND=noninteractive
|
99
|
+
|
89
100
|
case $1 in
|
90
101
|
3*) codename=cumulus ;;
|
91
102
|
6) codename=squeeze ;;
|
92
103
|
7) codename=wheezy ;;
|
93
104
|
8) codename=jessie ;;
|
94
105
|
9) codename=stretch ;;
|
106
|
+
10) codename=buster ;;
|
107
|
+
11) codename=bullseye ;;
|
108
|
+
12) codename=bookworm ;;
|
109
|
+
13) codename=trixie ;;
|
110
|
+
14) codename=forky ;;
|
95
111
|
12.04) codename=precise ;;
|
96
112
|
14.04) codename=trusty ;;
|
97
113
|
16.04) codename=xenial ;;
|
@@ -104,13 +120,12 @@ setup_apt() {
|
|
104
120
|
info "Installing default packages"
|
105
121
|
apt-get install -y ${COMMON_DEFAULT_PACKAGES} git-core ${EXTRA_PACKAGES} >/dev/null
|
106
122
|
|
107
|
-
info "
|
108
|
-
|
109
|
-
|
123
|
+
info "Set locale"
|
124
|
+
localectl set-locale LANG=en_US.UTF-8
|
125
|
+
|
126
|
+
info "Installing puppet"
|
127
|
+
apt-get install -y puppet >/dev/null
|
110
128
|
|
111
|
-
info "installing Environment modules and LMod"
|
112
|
-
apt-get install -y environment-modules lmod
|
113
|
-
apt-get install -y build-essentials
|
114
129
|
}
|
115
130
|
|
116
131
|
setup_linux() {
|
@@ -144,7 +159,7 @@ setup_linux() {
|
|
144
159
|
info "Detected Linux distro: ${distro} version ${majver} on arch ${ARCH}"
|
145
160
|
case "$distro" in
|
146
161
|
debian|ubuntu) setup_apt $majver ;;
|
147
|
-
redhat|fedora|centos|scientific|amazon) setup_redhat $majver ;;
|
162
|
+
redhat|rocky|fedora|centos|almalinux|scientific|amazon) setup_redhat $majver ;;
|
148
163
|
*) echo "Not supported distro: $distro"; exit 1;;
|
149
164
|
esac
|
150
165
|
|
@@ -169,6 +184,9 @@ setup_dotfiles () {
|
|
169
184
|
info "installing dotfiles for 'vagrant' user"
|
170
185
|
sudo -u vagrant ${dotfile_install_cmd}
|
171
186
|
fi
|
187
|
+
info "cleanup .inputrc"
|
188
|
+
rm -f /root/.inputrc
|
189
|
+
sudo -u vagrant rm -f ~vagrant/.inputrc
|
172
190
|
}
|
173
191
|
|
174
192
|
setup_motd() {
|