falkorlib 0.8.9 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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() {
|