File: openstack-cluster-installer-bodi-hook-script

package info (click to toggle)
openstack-cluster-installer 43.0.18
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,484 kB
  • sloc: php: 19,127; sh: 18,142; ruby: 75; makefile: 31; xml: 8
file content (860 lines) | stat: -rwxr-xr-x 44,989 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
#!/bin/sh

set -e
set -x

UNAME_MINUS_M=$(uname -m)

if ! [ -r /usr/share/openstack-pkg-tools/pkgos_func ] ; then
	echo "Could not read /usr/share/openstack-pkg-tools/pkgos_func."
	exit 1
fi
. /usr/share/openstack-pkg-tools/pkgos_func

openstack_release=$(cat /etc/oci_openstack_release)
debian_release=$(cat /etc/oci_debian_release)
if [ -r /etc/oci_use_debian_dot_net_backport ] ; then
	use_debian_dot_net_backport=$(cat /etc/oci_use_debian_dot_net_backport)
else
	use_debian_dot_net_backport=no
fi
official_backports_repo_url=$(cat /etc/oci_debian_mirror)
if [ -r /etc/oci_use_debian_official_backports ] ; then
	use_debian_official_backports=$(cat /etc/oci_use_debian_official_backports)
	if [ -r /etc/oci_debian_archived_backports_list ] && [ -r /etc/oci_debian_archive_mirror ] && grep -q $debian_release /etc/oci_debian_archived_backports_list ; then
		official_backports_repo_url=$(cat /etc/oci_debian_archive_mirror)
	fi
else
	use_debian_official_backports=no
fi
if [ -r /etc/oci_use_incoming_build ] ; then
	install_buildd_incoming=$(cat /etc/oci_use_incoming_build)
else
	install_buildd_incoming=no
fi
if [ -r /etc/oci_incoming_buildd_url ] ; then
	debian_incoming_buildd=$(cat /etc/oci_incoming_buildd_url)
else
	debian_incoming_buildd=no
fi
debian_mirror=$(cat /etc/oci_debian_mirror)

if [ -r /etc/oci/production_system_setup_backports_repo ] ; then
	production_system_setup_backports_repo=$(cat /etc/oci/production_system_setup_backports_repo)
else
	production_system_setup_backports_repo=no
fi

if [ -r /etc/oci/production_system_setup_nonfree_repo ] ; then
	production_system_setup_nonfree_repo=$(cat /etc/oci/production_system_setup_nonfree_repo)
else
	production_system_setup_nonfree_repo=no
fi

if [ -r /etc/oci/production_system_install_nonfree_firmware_from_backports ] ; then
	production_system_install_nonfree_firmware_from_backports=$(cat /etc/oci/production_system_install_nonfree_firmware_from_backports)
else
	production_system_install_nonfree_firmware_from_backports=no
fi

if [ -r /etc/oci/production_system_install_firmware_from_backports_list ] ; then
	production_system_install_firmware_from_backports_list=$(cat /etc/oci/production_system_install_firmware_from_backports_list)
else
	production_system_install_firmware_from_backports_list=""
fi

# Ceph backport stuff
# Should we do ceph pinning?
if [ -r /etc/oci_ceph_from_stable_backports ] ; then
	ceph_from_stable_backports=$(cat /etc/oci_ceph_from_stable_backports)
else
	ceph_from_stable_backports=no
fi

# Should we install osbpo for Ceph?
if [ -r /etc/oci_ceph_use_osbpo ] ; then
	ceph_use_osbpo=$(cat /etc/oci_ceph_use_osbpo)
else
	ceph_use_osbpo=no
fi

# What release?
if [ -r /etc/oci_ceph_osbpo_release ] ; then
	ceph_osbpo_release=$(cat /etc/oci_ceph_osbpo_release)
else
	ceph_osbpo_release=""
fi

# Should we use upstream Ceph repo?
if [ -r /etc/oci_install_ceph_upstream_repo ] ; then
	install_ceph_upstream_repo=$(cat /etc/oci_install_ceph_upstream_repo)
else
	install_ceph_upstream_repo=no
fi
# What is its URL?
debian_mirror_ceph=$(cat /etc/oci_debian_mirror_ceph)

# This script writes rc.local in the HDD of installed OS
# so that it can inform the PXE server that the OS is up.

mkdir -p ${BODI_CHROOT_PATH}/etc/oci
cp /etc/oci/pxe-server-ip ${BODI_CHROOT_PATH}/etc/oci/pxe-server-ip

# If we see an already prepared hosts file, copy it to the chroot
if [ -e /oci-hosts-file ] ; then
	cat /oci-hosts-file >${BODI_CHROOT_PATH}/etc/hosts
fi

if [ -r /puppet-master-host ] ; then
	MY_HOSTNAME=$(cat /puppet-master-host)
else
	MY_HOSTNAME=$(hostname --fqdn)
fi

# Configure the puppet agent to talk to the puppet master
if [ -e ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf ] ; then
	if ! cat ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf | grep '\[main\]' ; then
		echo '[main]' >>${BODI_CHROOT_PATH}/etc/puppet/puppet.conf
	fi
	. /usr/share/openstack-pkg-tools/pkgos_func
	pkgos_add_directive ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main server=example.com "#puppet master address"
	pkgos_inifile set ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main server ${MY_HOSTNAME}

	# Default is 512, which is not enough, we had a warning about 665 top level facts.
	pkgos_add_directive ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main top_level_facts_soft_limit=81920 "#Default is 512, which is not enough, we had a warning about 2382 top level facts."
	pkgos_inifile set ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main top_level_facts_soft_limit 81920

	pkgos_add_directive ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main fact_value_length_soft_limit=40960 "#With a lot of VMs in a compute, there is a fact with all interfaces in one line, so it is huge."
	pkgos_inifile set ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main fact_value_length_soft_limit 40960

	pkgos_add_directive ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main number_of_facts_soft_limit=40960 "#With a lot of VMs in a compute (hundreds), there is also too many facts."
	pkgos_inifile set ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main number_of_facts_soft_limit 40960

	# On controllers, the default 1h is not enough on first run.
	pkgos_add_directive ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main runtimeout=7200 "#On controllers, the default 1h is not enough on first run."
	pkgos_inifile set ${BODI_CHROOT_PATH}/etc/puppet/puppet.conf main runtimeout 7200
fi

# Copy the http_proxy_addr file to provisionned hosts.
if [ -e /etc/oci/http_proxy_addr ] ; then
	mkdir -p ${BODI_CHROOT_PATH}/etc/oci
	cp /etc/oci/http_proxy_addr ${BODI_CHROOT_PATH}/etc/oci
fi

# Copy files under /oci-in-target to the root of the target
if [ -d /oci-in-target ] ; then
	CWD=$(pwd)
	cd /oci-in-target
	if [ -d usr/bin ] ; then
		chmod +x usr/bin/*
		chown root:root usr/bin/*
	fi
	if [ -d etc/oci ] ; then
		chown -R root:root etc/oci
	fi
	cp -axf * ${BODI_CHROOT_PATH}
	cd ${CWD}
	# Make sure we have correct rights for /root/.ssh
	mkdir -p ${BODI_CHROOT_PATH}/root
	if [ -e ${BODI_CHROOT_PATH}/root/.ssh ] ; then
		chmod 0700 ${BODI_CHROOT_PATH}/root/.ssh
	fi
	chmod 0700 ${BODI_CHROOT_PATH}/root
	chown -R root:root ${BODI_CHROOT_PATH}/root
	if [ -e ${BODI_CHROOT_PATH}/root/.ssh/id_rsa.pub ] ; then
		cat ${BODI_CHROOT_PATH}/root/.ssh/id_rsa.pub >> ${BODI_CHROOT_PATH}/root/.ssh/authorized_keys
	fi
	if [ -e ${BODI_CHROOT_PATH}/etc ] ; then
		chown root:root ${BODI_CHROOT_PATH}/etc || true
		chown root:root ${BODI_CHROOT_PATH}/etc/motd || true
		if [ -e ${BODI_CHROOT_PATH}/etc/facter ] ; then
			chown root:root ${BODI_CHROOT_PATH}/etc/facter
			if [ -e ${BODI_CHROOT_PATH}/etc/facter/facts.d ] ; then
				chown root:root ${BODI_CHROOT_PATH}/etc/facter/facts.d
				if [ -e ${BODI_CHROOT_PATH}/etc/facter/facts.d/swift_blockdevs_names_to_uuid.sh ] ; then
					chown root:root ${BODI_CHROOT_PATH}/etc/facter/facts.d/swift_blockdevs_names_to_uuid.sh
					chmod +x ${BODI_CHROOT_PATH}/etc/facter/facts.d/swift_blockdevs_names_to_uuid.sh
				fi
				if [ -e ${BODI_CHROOT_PATH}/etc/facter/facts.d/swift_fstab_dev_list.sh ] ; then
					chown root:root ${BODI_CHROOT_PATH}/etc/facter/facts.d/swift_fstab_dev_list.sh
					chmod +x ${BODI_CHROOT_PATH}/etc/facter/facts.d/swift_fstab_dev_list.sh
				fi
			fi
		fi
	fi
	# Make sure we have correct rights for /etc/cron.weekly scripts
	chown -R root:root ${BODI_CHROOT_PATH}/etc/cron.weekly || true
	if [ -e ${BODI_CHROOT_PATH}/etc/cron.weekly/oci-fernet-keys-rotate ] ; then
		chmod +x ${BODI_CHROOT_PATH}/etc/cron.weekly/oci-fernet-keys-rotate
	fi
	chown -R root:root ${BODI_CHROOT_PATH}/etc/cron.hourly || true
	if [ -e ${BODI_CHROOT_PATH}/etc/cron.hourly/oci-glance-image-rsync ] ; then
		chmod +x ${BODI_CHROOT_PATH}/etc/cron.hourly/oci-glance-image-rsync
	fi
fi

if [ -r ${BODI_CHROOT_PATH}/etc/oci/oci-repository-key.asc ] ; then
	OCI_REPO_SIGNED_BY="[signed-by=/etc/oci/oci-repository-key.asc]"
else
	OCI_REPO_SIGNED_BY=""
fi

# Add ${debian_release}-${openstack_release} backport repo
if [ "${use_debian_dot_net_backport}" = "yes" ] ; then
	if [ ! -e ${BODI_CHROOT_PATH}/etc/oci/oci-repository-key.asc ] && [ -e /oci-backports-pubkey.gpg ] ; then
		cp /oci-backports-pubkey.gpg ${BODI_CHROOT_PATH}
		chroot ${BODI_CHROOT_PATH} apt-key add /oci-backports-pubkey.gpg
		rm ${BODI_CHROOT_PATH}/oci-backports-pubkey.gpg
	fi
	if ! [ -e ${BODI_CHROOT_PATH}/etc/apt/sources.list.d/${debian_release}-${openstack_release}.list ] ; then
		if [ "${UNAME_MINUS_M}" = "x86_64" ] ; then
			SITE=${debian_release}-${openstack_release}.debian.net
		else
			SITE=osbpo.debian.net
		fi
		echo "deb ${OCI_REPO_SIGNED_BY} http://${SITE}/debian ${debian_release}-${openstack_release}-backports main
deb-src ${OCI_REPO_SIGNED_BY} http://${SITE}/debian ${debian_release}-${openstack_release}-backports main

deb ${OCI_REPO_SIGNED_BY} http://${SITE}/debian ${debian_release}-${openstack_release}-backports-nochange main
deb-src ${OCI_REPO_SIGNED_BY} http://${SITE}/debian ${debian_release}-${openstack_release}-backports-nochange main
" >${BODI_CHROOT_PATH}/etc/apt/sources.list.d/${debian_release}-${openstack_release}.list
		chroot ${BODI_CHROOT_PATH} apt-get update
		chroot ${BODI_CHROOT_PATH} apt-get -y -o Dpkg::Options::="--force-confnew" dist-upgrade
	fi
fi

if [ "${use_debian_official_backports}" = "yes" ] || [ "${production_system_setup_backports_repo}" = "yes" ] ; then
	if [ "${production_system_setup_nonfree_repo}" = "yes" ] ; then
		BPO_NON_FREE_CONTRIB=" contrib non-free"
	else
		BPO_NON_FREE_CONTRIB=""
	fi
	mkdir -p ${BODI_CHROOT_PATH}/etc/apt/sources.list.d
	echo "deb ${official_backports_repo_url} ${debian_release}-backports main${BPO_NON_FREE_CONTRIB}
deb-src ${official_backports_repo_url} ${debian_release}-backports main${BPO_NON_FREE_CONTRIB}" >${BODI_CHROOT_PATH}/etc/apt/sources.list.d/${debian_release}-backports.list
	chroot ${BODI_CHROOT_PATH} apt-get update
	if [ "${production_system_install_nonfree_firmware_from_backports}" = "yes" ] ; then
		chroot ${BODI_CHROOT_PATH} apt-get install -t ${debian_release}-backports -y ${production_system_install_firmware_from_backports_list} || true
	fi
fi

# Setup ceph-<RELEASE> osbpo repo
if [ "${ceph_use_osbpo}" = "yes" ] ; then
	mkdir -p ${BODI_CHROOT_PATH}/etc/apt/sources.list.d
	echo "deb ${OCI_REPO_SIGNED_BY} http://osbpo.debian.net/debian ${ceph_osbpo_release} main
deb-src ${OCI_REPO_SIGNED_BY} http://osbpo.debian.net/debian ${ceph_osbpo_release} main
" >>${BODI_CHROOT_PATH}/etc/apt/sources.list.d/${ceph_osbpo_release}.list
	chroot ${BODI_CHROOT_PATH} apt-get update
fi

# Setup Ceph pinning
if [ "${ceph_from_stable_backports}" = "yes" ] ; then
	mkdir -p ${BODI_CHROOT_PATH}/etc/apt/preferences.d
	if [ "${debian_release}" = "buster" ] ; then
		# Pacific list:
		CEPH_PKG_LIST="ceph ceph-base ceph-base-dbg ceph-common ceph-common-dbg ceph-fuse ceph-grafana-dashboards ceph-immutable-object-cache ceph-immutable-object-cache-dbg ceph-mds ceph-mds-dbg ceph-mgr ceph-mgr-cephadm ceph-mgr-dashboard ceph-mgr-dbg ceph-mgr-diskprediction-local ceph-mgr-diskprediction-cloud ceph-mgr-k8sevents ceph-mgr-modules-core ceph-mgr-rook ceph-mgr-k8sevents ceph-mgr-ssh ceph-mon ceph-mon-dbg ceph-osd ceph-osd-dbg ceph-prometheus-alerts ceph-resource-agents ceph-test cephadm cephfs-mirror cephfs-mirror-dbg cephfs-shell cephfs-top libcephfs-dev libcephfs-java libcephfs-jni libcephfs2 libcephfs2-dbg librados-dev librados2 librados2-dbg libradospp-dev libradosstriper-dev libradosstriper1 libradosstriper1-dbg librbd-dev librbd1 librbd1-dbg librgw-dev librgw2 librgw2-dbg libsqlite3-mod-ceph libsqlite3-mod-ceph-dbg libsqlite3-mod-ceph-dev python3-ceph python3-ceph-argparse python3-ceph-common python3-cephfs python3-rados python3-rbd python3-rgw rados-objclass-dev radosgw radosgw-dbg rbd-fuse rbd-fuse-dbg rbd-mirror rbd-mirror-dbg rbd-nbd rbd-nbd-dbg smartmontools"
	elif [ "${debian_release}" = "bookworm" ] ; then
		# Reef list:
		CEPH_PKG_LIST="ceph ceph-base ceph-base-dbg ceph-common ceph-common-dbg ceph-grafana-dashboards ceph-immutable-object-cache ceph-immutable-object-cache-dbg ceph-mds ceph-mds-dbg ceph-mgr ceph-mgr-cephadm ceph-mgr-dashboard ceph-mgr-dbg ceph-mgr-k8sevents ceph-mgr-modules-core ceph-mgr-rook ceph-mon ceph-mon-dbg ceph-osd ceph-osd-dbg ceph-prometheus-alerts ceph-resource-agents ceph-test ceph-test-dbg ceph-volume cephadm cephfs-mirror cephfs-mirror-dbg cephfs-shell cephfs-top libboost-all-dev libboost-atomic-dev libboost-atomic1.83-dev libboost-atomic1.83.0 libboost-atomic1.83.0-dbgsym libboost-chrono-dev libboost-chrono1.83-dev libboost-chrono1.83.0t64 libboost-chrono1.83.0t64-dbgsym libboost-container-dev libboost-container1.83-dev libboost-container1.83.0 libboost-container1.83.0-dbgsym libboost-context-dev libboost-context1.83-dev libboost-context1.83.0 libboost-context1.83.0-dbgsym libboost-contract-dev libboost-contract1.83-dev libboost-contract1.83.0 libboost-contract1.83.0-dbgsym libboost-coroutine-dev libboost-coroutine1.83-dev libboost-coroutine1.83.0 libboost-coroutine1.83.0-dbgsym libboost-date-time-dev libboost-date-time1.83-dev libboost-date-time1.83.0 libboost-date-time1.83.0-dbgsym libboost-dev libboost-doc libboost-exception-dev libboost-exception1.83-dev libboost-fiber-dev libboost-fiber1.83-dev libboost-fiber1.83.0 libboost-fiber1.83.0-dbgsym libboost-filesystem-dev libboost-filesystem1.83-dev libboost-filesystem1.83.0 libboost-filesystem1.83.0-dbgsym libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.83-dev libboost-graph-parallel1.83.0 libboost-graph-parallel1.83.0-dbgsym libboost-graph1.83-dev libboost-graph1.83.0 libboost-graph1.83.0-dbgsym libboost-iostreams-dev libboost-iostreams1.83-dev libboost-iostreams1.83.0 libboost-iostreams1.83.0-dbgsym libboost-json-dev libboost-json1.83-dev libboost-json1.83.0 libboost-json1.83.0-dbgsym libboost-locale-dev libboost-locale1.83-dev libboost-locale1.83.0 libboost-locale1.83.0-dbgsym libboost-log-dev libboost-log1.83-dev libboost-log1.83.0 libboost-log1.83.0-dbgsym libboost-math-dev libboost-math1.83-dev libboost-math1.83.0 libboost-math1.83.0-dbgsym libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.83-dev libboost-mpi-python1.83.0 libboost-mpi-python1.83.0-dbgsym libboost-mpi1.83-dev libboost-mpi1.83.0 libboost-mpi1.83.0-dbgsym libboost-nowide-dev libboost-nowide1.83-dev libboost-nowide1.83.0 libboost-nowide1.83.0-dbgsym libboost-numpy-dev libboost-numpy1.83-dev libboost-numpy1.83.0 libboost-numpy1.83.0-dbgsym libboost-program-options-dev libboost-program-options1.83-dev libboost-program-options1.83.0 libboost-program-options1.83.0-dbgsym libboost-python-dev libboost-python1.83-dev libboost-python1.83.0 libboost-python1.83.0-dbgsym libboost-random-dev libboost-random1.83-dev libboost-random1.83.0 libboost-random1.83.0-dbgsym libboost-regex-dev libboost-regex1.83-dev libboost-regex1.83.0 libboost-regex1.83.0-dbgsym libboost-serialization-dev libboost-serialization1.83-dev libboost-serialization1.83.0 libboost-serialization1.83.0-dbgsym libboost-stacktrace-dev libboost-stacktrace1.83-dev libboost-stacktrace1.83.0 libboost-stacktrace1.83.0-dbgsym libboost-system-dev libboost-system1.83-dev libboost-system1.83.0 libboost-system1.83.0-dbgsym libboost-test-dev libboost-test1.83-dev libboost-test1.83.0 libboost-test1.83.0-dbgsym libboost-thread-dev libboost-thread1.83-dev libboost-thread1.83.0 libboost-thread1.83.0-dbgsym libboost-timer-dev libboost-timer1.83-dev libboost-timer1.83.0 libboost-timer1.83.0-dbgsym libboost-tools-dev libboost-type-erasure-dev libboost-type-erasure1.83-dev libboost-type-erasure1.83.0 libboost-type-erasure1.83.0-dbgsym libboost-url-dev libboost-url1.83-dev libboost-url1.83.0 libboost-url1.83.0-dbgsym libboost-wave-dev libboost-wave1.83-dev libboost-wave1.83.0 libboost-wave1.83.0-dbgsym libboost1.83-all-dev libboost1.83-dev libboost1.83-doc libboost1.83-tools-dev libboost1.83-tools-dev-dbgsym libcephfs-dev libcephfs-java libcephfs-jni libcephfs-jni-dbgsym libcephfs2 libcephfs2-dbg librados-dev librados-dev-dbgsym librados2 librados2-dbg libradospp-dev libradosstriper-dev libradosstriper1 libradosstriper1-dbg librbd-dev librbd1 librbd1-dbg librgw-dev librgw2 librgw2-dbg libsqlite3-mod-ceph libsqlite3-mod-ceph-dbg libsqlite3-mod-ceph-dev liburing-dev liburing2 liburing2-dbgsym python3-ceph python3-ceph-argparse python3-ceph-common python3-cephfs python3-cephfs-dbgsym python3-rados python3-rados-dbgsym python3-rbd python3-rbd-dbgsym python3-rgw python3-rgw-dbgsym rados-objclass-dev radosgw radosgw-dbg rbd-fuse rbd-fuse-dbg rbd-mirror rbd-mirror-dbg rbd-nbd rbd-nbd-dbg"
	else
		echo "Except for buster and bookworm, I do not know how to pin Ceph. Please contribute."
		exit 1
	fi

	if [ "${ceph_use_osbpo}" = "yes" ] ; then
		CEPH_BPO_REL_NAME="o=osbpo"
			echo "Package: *
Pin: release o=osbpo
Pin-Priority: 900
">>${BODI_CHROOT_PATH}/etc/apt/preferences.d/99ceph-from-debian-backports
	else
		CEPH_BPO_REL_NAME="a=${debian_release}-backports"
		for PKG in ${CEPH_PKG_LIST} ; do
			echo "Package: ${PKG}
Pin: release a=${debian_release}-backports
Pin-Priority: 900
">>${BODI_CHROOT_PATH}/etc/apt/preferences.d/99ceph-from-debian-backports
		done
	fi

	chroot ${BODI_CHROOT_PATH} apt-get update
fi

# Add buildd_incoming repo, so we can do quick tests with Sid
if [ "${install_buildd_incoming}" = "yes" ] ; then
	echo "deb ${debian_incoming_buildd} buildd-sid main
deb-src ${debian_incoming_buildd} buildd-sid main
" >${BODI_CHROOT_PATH}/etc/apt/sources.list.d/incoming-buildd.list
	chroot ${BODI_CHROOT_PATH} apt-get update
	chroot ${BODI_CHROOT_PATH} apt-get -y -o Dpkg::Options::="--force-confnew" dist-upgrade
fi

# Add the Ceph upstream repo
if [ "${install_ceph_upstream_repo}" = "yes" ] ; then
	echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFX4hgkBEADLqn6O+UFp+ZuwccNldwvh5PzEwKUPlXKPLjQfXlQRig1flpCH
E0HJ5wgGlCtYd3Ol9f9+qU24kDNzfbs5bud58BeE7zFaZ4s0JMOMuVm7p8JhsvkU
C/Lo/7NFh25e4kgJpjvnwua7c2YrA44ggRb1QT19ueOZLK5wCQ1mR+0GdrcHRCLr
7Sdw1d7aLxMT+5nvqfzsmbDullsWOD6RnMdcqhOxZZvpay8OeuK+yb8FVQ4sOIzB
FiNi5cNOFFHg+8dZQoDrK3BpwNxYdGHsYIwU9u6DWWqXybBnB9jd2pve9PlzQUbO
eHEa4Z+jPqxY829f4ldaql7ig8e6BaInTfs2wPnHJ+606g2UH86QUmrVAjVzlLCm
nqoGymoAPGA4ObHu9X3kO8viMBId9FzooVqR8a9En7ZE0Dm9O7puzXR7A1f5sHoz
JdYHnr32I+B8iOixhDUtxIY4GA8biGATNaPd8XR2Ca1hPuZRVuIiGG9HDqUEtXhV
fY5qjTjaThIVKtYgEkWMT+Wet3DPPiWT3ftNOE907e6EWEBCHgsEuuZnAbku1GgD
LBH4/a/yo9bNvGZKRaTUM/1TXhM5XgVKjd07B4cChgKypAVHvef3HKfCG2U/DkyA
LjteHt/V807MtSlQyYaXUTGtDCrQPSlMK5TjmqUnDwy6Qdq8dtWN3DtBWQARAQAB
tCpDZXBoLmNvbSAocmVsZWFzZSBrZXkpIDxzZWN1cml0eUBjZXBoLmNvbT6JAjgE
EwECACIFAlX4hgkCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOhKwsBG
DzmUXdIQAI8YPcZMBWdv489q8CzxlfRIRZ3Gv/G/8CH+EOExcmkVZ89mVHngCdAP
DOYCl8twWXC1lwJuLDBtkUOHXNuR5+Jcl5zFOUyldq1Hv8u03vjnGT7lLJkJoqpG
l9QD8nBqRvBU7EM+CU7kP8+09b+088pULil+8x46PwgXkvOQwfVKSOr740Q4J4nm
/nUOyTNtToYntmt2fAVWDTIuyPpAqA6jcqSOC7Xoz9cYxkVWnYMLBUySXmSS0uxl
3p+wK0lMG0my/gb+alke5PAQjcE5dtXYzCn+8Lj0uSfCk8Gy0ZOK2oiUjaCGYN6D
u72qDRFBnR3jaoFqi03bGBIMnglGuAPyBZiI7LJgzuT9xumjKTJW3kN4YJxMNYu1
FzmIyFZpyvZ7930vB2UpCOiIaRdZiX4Z6ZN2frD3a/vBxBNqiNh/BO+Dex+PDfI4
TqwF8zlcjt4XZ2teQ8nNMR/D8oiYTUW8hwR4laEmDy7ASxe0p5aijmUApWq5UTsF
+s/QbwugccU0iR5orksM5u9MZH4J/mFGKzOltfGXNLYI6D5Mtwrnyi0BsF5eY0u6
vkdivtdqrq2DXY+ftuqLOQ7b+t1RctbcMHGPptlxFuN9ufP5TiTWSpfqDwmHCLsT
k2vFiMwcHdLpQ1IH8ORVRgPPsiBnBOJ/kIiXG2SxPUTjjEGOVgeA
=/Tod
-----END PGP PUBLIC KEY BLOCK-----
" >${BODI_CHROOT_PATH}/root/ceph-repo.asc
	chroot ${BODI_CHROOT_PATH} apt-key add /root/ceph-repo.asc
	rm ${BODI_CHROOT_PATH}/root/ceph-repo.asc
	echo "deb ${debian_mirror_ceph} ${debian_release} main
deb-src ${debian_mirror_ceph} ${debian_release} main
" >${BODI_CHROOT_PATH}/etc/apt/sources.list.d/ceph.list
	chroot ${BODI_CHROOT_PATH} apt-get update
fi


# This has to be installed *after* the debootstrap, otherwise debootstrap will fail
# and libxml-xpath-perl is a dependency of oci-fixup-compute-node
if [ -x ${BODI_CHROOT_PATH}/usr/bin/oci-fixup-compute-node ] ; then
	chroot ${BODI_CHROOT_PATH} apt-get install libxml-xpath-perl -y -o Dpkg::Options::="--force-confnew"
fi

if [ -e /self-signed-api-cert ] ; then
	OCI_PKI_CA_CERT="OS_CACERT=/etc/ssl/certs/oci-pki-oci-ca-chain.pem"
	mkdir -p ${BODI_CHROOT_PATH}/etc/oci/self-signed-api-cert
else
	OCI_PKI_CA_CERT=""
fi

# Customize /root/.screenrc
echo "startup_message off
defscrollback 5000
caption always \"%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H  -  %d.%m.%Y  - %c\"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce on
term screen-256color
termcapinfo konsole-256color ti@:te@" >${BODI_CHROOT_PATH}/root/.screenrc

# Setup /root/.bashrc
echo "# ~/.bashrc: executed by bash(1) for non-login shells.

export LS_OPTIONS='--color=auto'
eval \"\$(dircolors)\"
alias ls='ls \${LS_OPTIONS}'

SYSTEM_SERIAL_NUM=\$(cat /etc/serial_number)

   RED=\"\\[\\033[1;31m\\]\"
 LGRAY=\"\\[\\033[0;37m\\]\"
  TEAL=\"\\[\\033[38;5;6m\\]\"
  BLUE=\"\\[\\033[1;34m\\]\"
NO_COL=\"\\[\\033[0m\\]\"
 LBLUE=\"\\[\\033[1;36m\\]\"

export PS1=\${RED}'\\u'\${LGRAY}@\${TEAL}\${SYSTEM_SERIAL_NUM}\${LGRAY}-\${BLUE}'\\h'\${LGRAY}'>_'\${NO_COL}' \\w # '

alias ssh='ssh -A -X'

if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
fi

export PAGER=most
" > ${BODI_CHROOT_PATH}/root/.bashrc

# No backup for joe
if [ -e ${BODI_CHROOT_PATH}/etc/joe/joerc ] ; then
	sed -i "s/^ -nobackups/-nobackups/" ${BODI_CHROOT_PATH}/etc/joe/joerc
fi

CHASSIS_MANUFACTURER=$(dmidecode -s system-manufacturer)

if [ "${CHASSIS_MANUFACTURER}" = "HPE" ] ; then
	# TODO: package ilorest-chif for arm64
	if [ "${UNAME_MINUS_M}" = "x86_64" ] ; then
		chroot ${BODI_CHROOT_PATH} apt-get install -o Dpkg::Options::="--force-confnew" ilorest ilorest-chif -y
	fi
fi

# Add HPE softare
if [ -e /etc/oci/setup-hpe-intarget ] && [ "${CHASSIS_MANUFACTURER}" = "HPE" ] && [ "${UNAME_MINUS_M}" = "x86_64" ] ; then
	HPE_REPO=$(cat /etc/oci/setup-hpe-intarget-repo)
	if [ -n "${HPE_REPO}" ] ; then
		echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

mQENBFZp0LkBCACXajRw3b4x7G7dulNYj0hUID4BtVFq/MjEb6PHckTxGxZDoQRX
RK54tiTFA9wq3b4P3yEFnOjbjRoI0d7Ls67FADugFO+cDCtsV9yuDlaYP/U/h2nX
N0R4AdYbsVd5yr6xr+GAy66Hmx5jFH3kbC+zJpOcI0tU9hcyU7gjbxu6KQ1ypI2Q
VRKf8sRBJXgmkOlbYx35ZUMFcmVxrLJXvUuxmAVXgT9f5M3Z3rsGt/ab+/+1TFSb
RsaqHsIPE0QH8ikqW4IeDQAo1T99pCdf7FWr45KFFTo7O4AZdLMWVgqeFHaSoZxJ
307VIINsWiwQoPp0tfU5NOOOwB1Sv3x9QgFtABEBAAG0P0hld2xldHQgUGFja2Fy
ZCBFbnRlcnByaXNlIENvbXBhbnkgUlNBLTIwNDgtMjUgPHNpZ25ocEBocGUuY29t
PokBPQQTAQIAJwUCVmnQuQIbLwUJEswDAAYLCQgHAwIGFQgCCQoLAxYCAQIeAQIX
gAAKCRDCCK3eJsK3l9G+B/0ekblsBeN+xHIJ28pvo2aGb2KtWBwbT1ugI+aIS17K
UQyHZJUQH+ZeRLvosuoiQEdcGIqmOxi2hVhSCQAOV1LAonY16ACveA5DFAEBz1+a
WQyx6sOLLEAVX1VqGlBXxh3XLEUWOhlAf1gZPNtHsmURTUy2h1Lv/Yoj8KLyuK2n
DmrLOS3Ro+RqWocaJfvAgXKgt6Fq/ChDUHOnar7lGswzMsbE/yzLJ7He4y89ImK+
2ktR5HhDuxqgCe9CWH6Q/1WGhUa0hZ3nbluq7maa+kPe2g7JcRzPH/nJuDCAOZ7U
6mHE8j0kMQMYjgaYEx2wc02aQRmPyxhbDLjSbtjomXRr
=voON
-----END PGP PUBLIC KEY BLOCK-----
" >${BODI_CHROOT_PATH}/hpe-key.txt
		chroot ${BODI_CHROOT_PATH} apt-key add /hpe-key.txt
		rm ${BODI_CHROOT_PATH}/hpe-key.txt
		if [ -e /etc/oci/setup-hpe-intarget-suite ] ; then
			HPE_SUITE=$(cat /etc/oci/setup-hpe-intarget-suite)
		else
			HPE_SUITE=${debian_release}
		fi
		if [ "${HPE_SUITE}" = "buster" ] ; then
			HPE_DEBIAN_SUITE=${HPE_SUITE}/current-gen10
		else
			HPE_DEBIAN_SUITE=${HPE_SUITE}/current
		fi
		echo "deb ${HPE_REPO} ${HPE_DEBIAN_SUITE} non-free" > ${BODI_CHROOT_PATH}/etc/apt/sources.list.d/hpe.list
		chroot ${BODI_CHROOT_PATH} apt-get update
		chroot ${BODI_CHROOT_PATH} apt-get install hponcfg ssacli storcli -y
		# Make sure installing storcli also includes a symlink in /usr/bin
		if ! [ -e ${BODI_CHROOT_PATH}/usr/bin/storcli64 ] ; then
			ln -s /opt/MegaRAID/storcli/storcli64 ${BODI_CHROOT_PATH}/usr/bin/storcli64
		fi
	fi
fi

# Add Dell iDRAC software
if [ -e /etc/oci/setup-dell-ipmi-intarget ] && [ "${CHASSIS_MANUFACTURER}" = "Dell Inc." ] ; then
	DELL_IPMI_REPO=$(cat /etc/oci/setup-dell-ipmi-intarget-repo)
	if [ -n "${DELL_IPMI_REPO}" ] ; then
		echo "-----BEGIN PGP PUBLIC KEY BLOCK-----

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
ZFe5xHRWSlrC3WTbzg==
=buqa
-----END PGP PUBLIC KEY BLOCK-----
" >${BODI_CHROOT_PATH}/dell-ipmi-key.txt
		chroot ${BODI_CHROOT_PATH} apt-key add /dell-ipmi-key.txt
		rm ${BODI_CHROOT_PATH}/dell-ipmi-key.txt
		echo "deb ${DELL_IPMI_REPO} stretch main" > ${BODI_CHROOT_PATH}/etc/apt/sources.list.d/dell-ipmi.list
		chroot ${BODI_CHROOT_PATH} apt-get update
		mkdir -p ${BODI_CHROOT_PATH}/opt/dell/srvadmin/lib/openmanage
		touch ${BODI_CHROOT_PATH}/opt/dell/srvadmin/lib/openmanage/IGNORE_GENERATION
		chroot ${BODI_CHROOT_PATH} apt-get install -y ipmitool net-tools dirmngr srvadmin-idracadm8 srvadmin-isvc srvadmin-deng dmidecode ipcalc iproute2 libopenipmi0

		IDRAC_TYPE=$(ipmitool sdr elist mcloc | awk '{print $1}')
		if [ "${IDRAC_TYPE}" = "iDRAC6" ] ; then
			chroot ${BODI_CHROOT_PATH} apt-get install libssl1.0.0 syscfg
		fi

		# Add modules to be loaded at boot time
		for m in "ipmi_msghandler" "ipmi_devintf" "ipmi_si"; do
			if ! grep -q "${m}" ${BODI_CHROOT_PATH}/etc/modules ; then
				echo "${m}" >> ${BODI_CHROOT_PATH}/etc/modules
			fi
		done

		# Create .ipc directories (to enable LCD, BMC communication)
		rm -rf ${BODI_CHROOT_PATH}/opt/dell/srvadmin/shared/.ipc &>/dev/null || true
		rm -rf ${BODI_CHROOT_PATH}/opt/dell/srvadmin/hapi/bin/.ipc &>/dev/null || true
		mkdir -p ${BODI_CHROOT_PATH}/opt/dell/srvadmin/shared/.ipc
		mkdir -p ${BODI_CHROOT_PATH}/opt/dell/srvadmin/hapi/bin/.ipc

		# make_omreg_dot_cfg
		mkdir -p ${BODI_CHROOT_PATH}/opt/dell/srvadmin/etc
		echo "suptlib.installpath=/opt/dell/srvadmin/
suptlib.logpath=/opt/dell/srvadmin/var/log/openmanage
suptlib.vardatapath=/opt/dell/srvadmin/var/lib/openmanage
suptlib.inipath=/opt/dell/srvadmin/etc/srvadmin-deng

OMDataEngine.omilcore.version=8.4.0
OMDataEngine.configtool=/opt/dell/srvadmin/sbin/dcecfg
OMDataEngine.installpath=/opt/dell/srvadmin/
OMDataEngine.logpath=/opt/dell/srvadmin/var/log/openmanage
OMDataEngine.vardatapath=/opt/dell/srvadmin/var/lib/openmanage
OMDataEngine.inipath=/opt/dell/srvadmin/etc/srvadmin-deng
OMDataEngine.startsnmpd=true

hapi.omilcore.version=8.4.0
hapi.configtool=/opt/dell/srvadmin/sbin/dchcfg
hapi.installpath=/opt/dell/srvadmin/
hapi.logpath=/opt/dell/srvadmin/var/log/openmanage
hapi.vardatapath=/opt/dell/srvadmin/var/lib/openmanage
hapi.inipath=/opt/dell/srvadmin/etc/srvadmin-hapi

openmanage.openipmi.kernel.2.6.x.ver_min_major=33
openmanage.openipmi.kernel.2.6.x.ver_min_minor=13
openmanage.openipmi.kernel.ver_min_major=2
openmanage.openipmi.kernel.ver_min_minor=6
openmanage.openipmi.kernel.ver_min_patch=15
openmanage.openipmi.rhel3.ver_min_major=35
openmanage.openipmi.rhel3.ver_min_minor=13
openmanage.openipmi.rhel4.ver_min_major=33
openmanage.openipmi.rhel4.ver_min_minor=13


Instrumentation.omilcore.version=8.4.0
Instrumentation.configtool=/opt/dell/srvadmin/sbin/dcicfg
Instrumentation.installpath=/opt/dell/srvadmin/
Instrumentation.logpath=/opt/dell/srvadmin/var/lib/openmanage
Instrumentation.vardatapath=/opt/dell/srvadmin/var/log/openmanage
Instrumentation.inipath=/opt/dell/srvadmin/etc/srvadmin-isvc
openmanage.version=8.4.0
openmanage.release=1
openmanage.archtype=64
openmanage.omilcore.installpath=/opt/dell/srvadmin
openmanage.omilcore.omiverdbpath=/opt/dell/srvadmin/var/lib/srvadmin-omilcore/
openmanage.funcs=/opt/dell/srvadmin/lib64/srvadmin-omilcore/Funcs.sh
openmanage.syslistfile=/opt/dell/srvadmin/share/srvadmin-omilcore/syslist.txt
openmanage.8gsyslistfile=/opt/dell/srvadmin/share/srvadmin-omilcore/8gsyslist.txt
openmanage.9gsyslistfile=/opt/dell/srvadmin/share/srvadmin-omilcore/9gsyslist.txt
openmanage.idracsyslistfile=/opt/dell/srvadmin/share/srvadmin-omilcore/idracsyslist.txt
openmanage.openipmi.syslisttypesfile=/opt/dell/srvadmin/share/srvadmin-omilcore/syslisttypes.txt
rac5.inipath=/opt/dell/srvadmin/etc/srvadmin-isvc
" >${BODI_CHROOT_PATH}/opt/dell/srvadmin/etc/omreg.cfg

		# Add Dell library path to ld config
		if [ ! -f ${BODI_CHROOT_PATH}/etc/ld.so.conf ] || ! grep -q "/opt/dell/toolkit/lib" ${BODI_CHROOT_PATH}/etc/ld.so.conf; then
			echo "/opt/dell/toolkit/lib" >> ${BODI_CHROOT_PATH}/etc/ld.so.conf
		fi
		chroot ${BODI_CHROOT_PATH} ldconfig -f /etc/ld.so.conf

	fi
fi

# Install megacli in target OS
if [ -e /etc/oci/setup-megacli-intarget ] && [ "${UNAME_MINUS_M}" = "x86_64" ] ; then
	echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

mQENBFHwGLoBCADGXHFostxbz4UzGFYtmox4pvyN1gMhq2KCuQ6f+FESa4HTd9L6
XVhXWPCad3cdxBIls+41+AdZTWxWMu7DUdy8nMU1Ikfw6JeHcSx97G5BdxBVMjK4
iMGfPdLfDgWf4BQ2h0dnTEWobt31WaqgNiNjNrKktqbymmF94pwYkwL53ydIA4zl
8ZQRZooFigkS9WdoKjh30Pv/SWakILSLcSQFHK0dvSkeGd1NxT9dMNPAXXqLom4+
7kCc0s04sS+0DwW16b0Hpb46mtsR9kzOnrE/Smj24uOGzNZen0oCc2Y7bfZlyaN+
RlTkWEze7lemc4Byup/QWkhT0Er8F8uxexy5ABEBAAG0PEhXUmFpZCAoaHR0cDov
L2h3cmFpZC5sZS12ZXJ0Lm5ldCkgPHJvb3RAaHdyYWlkLmxlLXZlcnQubmV0PokB
OAQTAQIAIgUCUfAYugIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQYAUh
DiOz07Rc4Af+N3dEZZHzLNVTjQ0+fCyeg8/flWOkR8DhP10cyoJhSHFTZRdXVshn
kP4VmmUycVeURh76DmrIRe/9Oyca6aGXccRMqvq+HMgBPVwD5qNhcJPIuzqEvmlO
6UIeW2ydil/v1pWu740fGntyFRQcsfqjReVPXw9K588F7MDMyL+31vLm6aorLSzR
hvLhOmGisTs0wg2Oz9f4muauRy6cpQPw/Zi/P/F4WkQYscbHrSbhszj6OIg/vftR
UbZ7QB26/+40B0ag4JzLpmj3scFxf/WdUl5LXazqhsbkurk7huV41BNKXi1+BS3c
x6pFzWEHpiuG1j7U/nScGzEQpsMlUW9D+rkBDQRR8Bi6AQgAuhH1H0VLwcROI/5n
9yTxSbTIZbyhUan3raAbit3pgo0zLagfUtp3vULVnm5ISqQcYFGLZoE1MUkmjGOL
38W0lsIiZTaKOKXxBbLlPhhrvlXnNWAG/S1wnq7K+DV179KCTkUzaLRDbHvv999j
9odBRtAkiTnCfHTMCN4AhydEejNxtlzJo4E5FecH4reimLI5euUdTltgCjixrbsa
KbQftYpSMdXnLy2+00QZoXu0U/h4WZcMhOSEEiyGP9BY6m5G76n03HIeQ6eALDFu
ryAgO+SB9rBrm/VN0kR/TZq0iA3uzLHC7zCw2aImipkr+rIuJOku0wH9MyowBbia
bQtnCQARAQABiQEfBBgBAgAJBQJR8Bi6AhsMAAoJEGAFIQ4js9O0d5YH/3fNQgsC
LvD0g2wdoksv5bG9CUOi9Bs0JHqI0LhXmPvMsbDojZ+zZle7KWNfK2227mWhmoG1
WLujJSmTtxhEO1fXIdYjlDfk2uLJKuFi2wQX9n8dFDUmKY3CUJgeVZof1uQ/5C3D
O06CcuOtf2d/+iijuW112aV1q1hoQqw71ojTET0iIV6lD/0i1eEBSSe1Ohb9yTGR
VxTVrB78zU9hih4/Oq8wJT/Fv25aO1MDSc26CXAg0JA6IWvKal3BSPNhtz4L4FIg
lXleArf9oJqxDO3TsV5zcLyxsIuRuxyP0+AKdSQUqv0dFi4Jf79OmvOmgwydhHjY
+f7quLbwiiDmPbU=
=Yv6D
-----END PGP PUBLIC KEY BLOCK-----" >${BODI_CHROOT_PATH}/megacli-key.txt
	chroot ${BODI_CHROOT_PATH} apt-key add /megacli-key.txt
	rm ${BODI_CHROOT_PATH}/megacli-key.txt
	MEGACLI_REPO=$(cat /etc/oci/setup-megacli-intarget-repo)
	echo "${MEGACLI_REPO}" > ${BODI_CHROOT_PATH}/etc/apt/sources.list.d/megacli.list
	chroot ${BODI_CHROOT_PATH} apt-get update
	chroot ${BODI_CHROOT_PATH} apt-get install -y megaraid-status megactl megamgr dellmgr megaclisas-status megacli
fi

# Install perccli in target OS
if [ -e /etc/oci/setup-perccli-intarget ] && [ "${UNAME_MINUS_M}" = "x86_64" ] ; then
	echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFdVSl8BEADReopiCpFyJOHNu2xW/tnTDanHQOIvMiWdVZVS8pUcQVhmyQ53
Wkwf/R/tUabqCmR8up/mf/rCENbEc43tEb7cuuOFbXYocDmwuxUrhOW3APfpgMJL
1GPjeMywBQUs8VuJReu3ZchJiROWC1RuOTpVfREuY9DyRbTTqYvXyvwqGIfq+fP4
CY3oq/PN1PlqsqTfP58ENFMlW9BHje0Za1Ruwi/mI0yc5gNSYjFjstag77MQOIFv
J9M+hgevMN0qHPDc2DiRmT2hsQ1rZah8G2LfzxbQxjSKifJZ2Jfcrpys6gLAOC9O
6JAs86qqnhd59Pl+MdDsOcKQDFkFWpZJk4KadrJzDGa9XoZusVxfGPt0vbAPx/UW
Q56jiVUSFoHeX2VVAJu5AhoMWz+k3YaWV37SAyF4oceVh2Um7G/NM+isXqG+8iN7
UuqV9AiTWydnNGf0oYwBBmEZXIXqRhfIJZVv99qfRnjEHvxD2kgYGk+GWOSym2Ap
FOERQUdSh2N8DT52JlrwR4zYbHEBf6+E3WY47oWCUtyCr4OyePCbX9ShmlhHsEnS
YpdmgtOU1NfMAN7xgByXgLxl28s6F0IXsRPdUauekMCqJxVfboxN81WQOOmuqLGS
qUgCr1M/1BlQDxbTfJQ4QtOFLarcf2pfx3Y15BRzSoEq/5Ll3DAUKUep3QARAQAB
tD1JbmZvbWFuaWFrIEFyY2hpdmUgQXV0b21hdGljIFNpZ25pbmcgS2V5IDxhcHRA
aW5mb21hbmlhay5jb20+iQI+BBMBCAAoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe
AQIXgAUCZl2BrwUJEsqeOwAKCRAo1l7/kzHEiVBYD/0e29tSqbQhkQmRcaYIRo/9
IPIdXmybvY0FxPDMvlrF2pBMbt9GNII05Ry0PZT4Dxn+bSc1rd8OSC1yC+JNzU+i
JDIwPEkG4pn+1JQm92S7zv8w+1oP3FokVnMcn0eQG7ydfYfKNf4ejs+y9c3ySpjl
37d6N1WXgp6NQwxOtpyOXalCjJZwdaMQCE776SGyt0GljrXOsX+NX2KgcjqTbP/S
uHGzYYZFtCLopFWANQl7rJEyR1sJP22O+lPEMaLmr2SteDSb86v9Bdk3vJsad1dY
YhqzF3v6TKmOZJlmpWoBN1Dn81qZn2HvIfPYfpica4KthoYeSQKk0OiyqH1lP1ae
2VnXAqgR16Y7H/8W9B4mu7Ru0OPQRETx+8O+FeYbKjwEeVoxYMbhEuuZeRAAI4Q7
5MQRLqYUwCy8vaknASaQQq2JVq7kDLIkBO+jGYoLb3rZxaPvoTRZbgnFVwbeHVzj
xLDyc5gYxwRxrzAm7lgw8LXC2Ud+DxxC5+tOZsmqHZe5nk9fepx/nbd1gJoTMktr
HeO7egYMLc+UK4A6vsmJyCXk7bu+ESYhaDUQG6cpc02+H4En9SYXQFawZvlBynh0
V6+fCvZSbOkD2VtsYIOld+6w87Tp7XpqxIG28tM++7S4bLKvL8GTpehqJ12F9Okx
Le8vV2BUt/Mm2vtOPeATyA==
=U0Ko
-----END PGP PUBLIC KEY BLOCK-----" >${BODI_CHROOT_PATH}/perccli-key.txt
	chroot ${BODI_CHROOT_PATH} apt-key add /perccli-key.txt
	rm ${BODI_CHROOT_PATH}/perccli-key.txt
	PERCCLI_REPO=$(cat /etc/oci/setup-perccli-intarget-repo)
	echo "${PERCCLI_REPO}" > ${BODI_CHROOT_PATH}/etc/apt/sources.list.d/perccli.list
	chroot ${BODI_CHROOT_PATH} apt-get update
	chroot ${BODI_CHROOT_PATH} apt-get install -y perccli
fi

# Install onecli in target OS
if [ -e /etc/oci/setup-onecli-intarget ] && [ "${UNAME_MINUS_M}" = "x86_64" ] ; then
	echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFdVSl8BEADReopiCpFyJOHNu2xW/tnTDanHQOIvMiWdVZVS8pUcQVhmyQ53
Wkwf/R/tUabqCmR8up/mf/rCENbEc43tEb7cuuOFbXYocDmwuxUrhOW3APfpgMJL
1GPjeMywBQUs8VuJReu3ZchJiROWC1RuOTpVfREuY9DyRbTTqYvXyvwqGIfq+fP4
CY3oq/PN1PlqsqTfP58ENFMlW9BHje0Za1Ruwi/mI0yc5gNSYjFjstag77MQOIFv
J9M+hgevMN0qHPDc2DiRmT2hsQ1rZah8G2LfzxbQxjSKifJZ2Jfcrpys6gLAOC9O
6JAs86qqnhd59Pl+MdDsOcKQDFkFWpZJk4KadrJzDGa9XoZusVxfGPt0vbAPx/UW
Q56jiVUSFoHeX2VVAJu5AhoMWz+k3YaWV37SAyF4oceVh2Um7G/NM+isXqG+8iN7
UuqV9AiTWydnNGf0oYwBBmEZXIXqRhfIJZVv99qfRnjEHvxD2kgYGk+GWOSym2Ap
FOERQUdSh2N8DT52JlrwR4zYbHEBf6+E3WY47oWCUtyCr4OyePCbX9ShmlhHsEnS
YpdmgtOU1NfMAN7xgByXgLxl28s6F0IXsRPdUauekMCqJxVfboxN81WQOOmuqLGS
qUgCr1M/1BlQDxbTfJQ4QtOFLarcf2pfx3Y15BRzSoEq/5Ll3DAUKUep3QARAQAB
tD1JbmZvbWFuaWFrIEFyY2hpdmUgQXV0b21hdGljIFNpZ25pbmcgS2V5IDxhcHRA
aW5mb21hbmlhay5jb20+iQI+BBMBCAAoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe
AQIXgAUCZl2BrwUJEsqeOwAKCRAo1l7/kzHEiVBYD/0e29tSqbQhkQmRcaYIRo/9
IPIdXmybvY0FxPDMvlrF2pBMbt9GNII05Ry0PZT4Dxn+bSc1rd8OSC1yC+JNzU+i
JDIwPEkG4pn+1JQm92S7zv8w+1oP3FokVnMcn0eQG7ydfYfKNf4ejs+y9c3ySpjl
37d6N1WXgp6NQwxOtpyOXalCjJZwdaMQCE776SGyt0GljrXOsX+NX2KgcjqTbP/S
uHGzYYZFtCLopFWANQl7rJEyR1sJP22O+lPEMaLmr2SteDSb86v9Bdk3vJsad1dY
YhqzF3v6TKmOZJlmpWoBN1Dn81qZn2HvIfPYfpica4KthoYeSQKk0OiyqH1lP1ae
2VnXAqgR16Y7H/8W9B4mu7Ru0OPQRETx+8O+FeYbKjwEeVoxYMbhEuuZeRAAI4Q7
5MQRLqYUwCy8vaknASaQQq2JVq7kDLIkBO+jGYoLb3rZxaPvoTRZbgnFVwbeHVzj
xLDyc5gYxwRxrzAm7lgw8LXC2Ud+DxxC5+tOZsmqHZe5nk9fepx/nbd1gJoTMktr
HeO7egYMLc+UK4A6vsmJyCXk7bu+ESYhaDUQG6cpc02+H4En9SYXQFawZvlBynh0
V6+fCvZSbOkD2VtsYIOld+6w87Tp7XpqxIG28tM++7S4bLKvL8GTpehqJ12F9Okx
Le8vV2BUt/Mm2vtOPeATyA==
=U0Ko
-----END PGP PUBLIC KEY BLOCK-----" >${BODI_CHROOT_PATH}/onecli-key.txt
	chroot ${BODI_CHROOT_PATH} apt-key add /onecli-key.txt
	rm ${BODI_CHROOT_PATH}/onecli-key.txt
	ONECLI_REPO=$(cat /etc/oci/setup-onecli-intarget-repo)
	echo "${ONECLI_REPO}" > ${BODI_CHROOT_PATH}/etc/apt/sources.list.d/onecli.list
	chroot ${BODI_CHROOT_PATH} apt-get update
	chroot ${BODI_CHROOT_PATH} apt-get install -y onecli
fi

# Add chassis serial number in /etc
#CHASSIS_SERIAL_NUMBER=$(dmidecode -s chassis-serial-number)
SYSTEM_SERIAL_NUMBER=$(dmidecode -s system-serial-number)
echo ${SYSTEM_SERIAL_NUMBER} > ${BODI_CHROOT_PATH}/etc/serialnumber
echo ${SYSTEM_SERIAL_NUMBER} > ${BODI_CHROOT_PATH}/etc/serial_number
chmod 0400 ${BODI_CHROOT_PATH}/etc/serialnumber ${BODI_CHROOT_PATH}/etc/serial_number

HOSTNAME=$(cat ${BODI_CHROOT_PATH}/etc/hostname)

#########################################
### Install puppet client certificate ###
#########################################
if [ -r /puppet-private-key.pem ] && [ -r /puppet-public-key.pem ] && [ -r /puppet-ca.pem ] && [ -r /puppet-signed-cert.pem ] ; then
        # Install puppet so we have the puppet:puppet user
        chroot ${BODI_CHROOT_PATH} apt-get install -y -o Dpkg::Options::="--force-confnew" puppet

        # Private key
        mkdir -p ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/private_keys
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/private_keys
        cp /puppet-private-key.pem ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/private_keys/${HOSTNAME}.pem
        chmod 640 ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/private_keys/${HOSTNAME}.pem
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/private_keys/${HOSTNAME}.pem

        # Public key
        mkdir -p ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/public_keys
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/public_keys
        cp /puppet-public-key.pem ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/public_keys/${HOSTNAME}.pem
        chmod 644 ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/public_keys/${HOSTNAME}.pem
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/public_keys/${HOSTNAME}.pem

        # ca.pem + cert
        mkdir -p ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/certs
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/certs

        cp /puppet-ca.pem ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/certs/ca.pem
        chmod 644 ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/certs/ca.pem
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/certs/ca.pem

        cp /puppet-signed-cert.pem ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/certs/${HOSTNAME}.pem
        chmod 644 ${BODI_CHROOT_PATH}/var/lib/puppet/ssl/certs/${HOSTNAME}.pem
        chroot ${BODI_CHROOT_PATH} chown puppet:puppet /var/lib/puppet/ssl/certs/${HOSTNAME}.pem
        touch ${BODI_CHROOT_PATH}/var/lib/oci-first-boot

        # This is needed by puppet-openstack
        mkdir -p ${BODI_CHROOT_PATH}/etc/facter/facts.d
        echo "os_service_default=<SERVICE DEFAULT>" >${BODI_CHROOT_PATH}/etc/facter/facts.d/os_service_default.txt
        echo "os_immutable=<SERVICE DEFAULT>" >${BODI_CHROOT_PATH}/etc/facter/facts.d/os_immutable.txt

        # We need puppet to start with OCI's generated root CA cert knowledge. That's the
        # Environment=OS_CACERT=/etc/ssl/certs/oci-pki-oci-ca-chain.pem
        # that will do this.
        # We can't do that if the cert isn't just self-signed: this breaks the setup of
        # keystone's admin role in puppet.
        if [ -e /self-signed-api-cert ] ; then
	        mkdir -p ${BODI_CHROOT_PATH}/etc/systemd/system/puppet.service.d/
	        echo "[Service]
Environment=OS_CACERT=/etc/ssl/certs/oci-pki-oci-ca-chain.pem
" >${BODI_CHROOT_PATH}/etc/systemd/system/puppet.service.d/oci-ca-cert.conf
	fi
fi

# Overrides epmd.socket file to have it bind on all IPs
# not just on localhost.
mkdir -p ${BODI_CHROOT_PATH}/etc/systemd/system
echo "[Unit]
Description=Erlang Port Mapper Daemon Activation Socket

[Socket]
ListenStream=4369
BindIPv6Only=both
Accept=false

[Install]
WantedBy=sockets.target
" >${BODI_CHROOT_PATH}/etc/systemd/system/epmd.socket

#########################################################
### Fix the unix rights of the SSH (signed) host keys ###
#########################################################
SSH_KEYS=$(ls ${BODI_CHROOT_PATH}/etc/ssh/ssh_host_*_key 2>/dev/null)
if [ -n "${SSH_KEYS}" ] ; then
	for i in ${SSH_KEYS} ; do
		chown root:root $i $i.pub
		chmod 0600 $i
		chmod 0644 $i.pub
	done
fi
SSH_KEYS_CERTS=$(ls ${BODI_CHROOT_PATH}/etc/ssh/ssh_host_*_key.pub 2>/dev/null)
if [ -n "${SSH_KEYS_CERTS}" ] ; then
	for i in ${SSH_KEYS_CERTS} ; do
		chown root:root $i
		chmod 0600 $i
		CERT=$(basename $i)
		echo "HostCertificate /etc/ssh/${CERT}" >>${BODI_CHROOT_PATH}/etc/ssh/sshd_config
	done
fi
if [ -e ${BODI_CHROOT_PATH}/etc/ssh/ssh_known_hosts ] ; then
	chown root:root ${BODI_CHROOT_PATH}/etc/ssh/ssh_known_hosts
fi
if [ -e ${BODI_CHROOT_PATH}/etc/ssh ] ; then
	chown root:root ${BODI_CHROOT_PATH}/etc/ssh
fi

##############################################################################
### Install an eventual x509 PKI, used so OpenStack nodes trust each other ###
##############################################################################
# These are the CA certificates
if ls /oci-pki* >/dev/null 2>&1 ; then
        mkdir -p ${BODI_CHROOT_PATH}/etc/ssl/certs
        cp /oci-pki* ${BODI_CHROOT_PATH}/etc/ssl/certs
        chroot ${BODI_CHROOT_PATH} /usr/sbin/update-ca-certificates -f
fi
# These are the node's SSL keys
if [ -r "/${HOSTNAME}.key" ] && [ -r "/${HOSTNAME}.crt" ] ; then
        mkdir -p ${BODI_CHROOT_PATH}/etc/ssl/private/
        cp /${HOSTNAME}.key ${BODI_CHROOT_PATH}/etc/ssl/private/ssl-cert-snakeoil.key
        mkdir -p ${BODI_CHROOT_PATH}/etc/ssl/certs
        cp /${HOSTNAME}.crt ${BODI_CHROOT_PATH}/etc/ssl/certs/ssl-cert-snakeoil.pem
        chroot ${BODI_CHROOT_PATH} /usr/sbin/update-ca-certificates -f
fi

# These are the swiftproxy SSL keys
if [ -r "/oci-pki-swiftproxy.key" ] && [ -r "/oci-pki-swiftproxy.crt" ] ; then
	mkdir -p ${BODI_CHROOT_PATH}/etc/ssl/private/
	cp /oci-pki-swiftproxy.key ${BODI_CHROOT_PATH}/etc/ssl/private/oci-pki-swiftproxy.key
	mkdir -p ${BODI_CHROOT_PATH}/etc/ssl/certs
	cp /oci-pki-swiftproxy.crt ${BODI_CHROOT_PATH}/etc/ssl/certs/oci-pki-swiftproxy.crt
	cp /oci-pki-swiftproxy.pem ${BODI_CHROOT_PATH}/etc/ssl/private/oci-pki-swiftproxy.pem
	chroot ${BODI_CHROOT_PATH} /usr/sbin/update-ca-certificates -f
fi

# These are the OpenStack public API SSL keys
if [ -r /oci-pki-api.crt ] ; then
        cp /oci-pki-api.crt ${BODI_CHROOT_PATH}/etc/ssl/certs/oci-pki-api.crt
        chroot ${BODI_CHROOT_PATH} /usr/sbin/update-ca-certificates -f
fi
if [ -r /oci-pki-api.pem ] ; then
        cp /oci-pki-api.pem ${BODI_CHROOT_PATH}/etc/ssl/private/oci-pki-api.pem
        chroot ${BODI_CHROOT_PATH} /usr/sbin/update-ca-certificates -f
fi
if [ -r /oci-pki-api.key ] ; then
        cp /oci-pki-api.key ${BODI_CHROOT_PATH}/etc/ssl/private/oci-pki-api.key
fi

# Add the nf_conntrack module by default.
if ! grep -q nf_conntrack ${BODI_CHROOT_PATH}/etc/modules ; then echo nf_conntrack >>${BODI_CHROOT_PATH}/etc/modules ; fi

#########################
### Install OCI utils ###
#########################
chroot ${BODI_CHROOT_PATH} apt-get install -y -o Dpkg::Options::="--force-confnew" openstack-cluster-installer-utils
chroot ${BODI_CHROOT_PATH} systemctl enable oci-report-status.service
chroot ${BODI_CHROOT_PATH} systemctl enable oci-first-boot.service