Skip to content

Commit f9d97f9

Browse files
committed
Merge branch 'testing'
2 parents eca76da + 3d5457c commit f9d97f9

File tree

10 files changed

+231
-0
lines changed

10 files changed

+231
-0
lines changed

manifests/ceph.pp

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# Ceph for SUNET
2+
class sunet::ceph(
3+
Array $adm,
4+
Array $clients,
5+
String $type,
6+
String $firstmon,
7+
)
8+
{
9+
$adm_public_key = lookup('adm_public_key', undef, undef, 'NOT_SET_IN_HIERA');
10+
$packages = ['lvm2', 'podman']
11+
$packages.each |$package| {
12+
package { $package:
13+
ensure => 'present',
14+
}
15+
}
16+
file {'/root/.ssh/':
17+
ensure => 'directory',
18+
owner => 'root',
19+
group => 'root',
20+
mode => '0700',
21+
}
22+
file {'/root/.ssh/authorized_keys':
23+
ensure => 'present',
24+
owner => 'root',
25+
group => 'root',
26+
mode => '0600',
27+
}
28+
if $adm_public_key != 'NOT_SET_IN_HIERA' {
29+
file_line { 'adm_public_key':
30+
path => '/root/.ssh/authorized_keys',
31+
line => $adm_public_key,
32+
}
33+
}
34+
$nodes = lookup('nodes', undef, undef, []);
35+
if $type == 'adm' {
36+
$extra_ports = []
37+
include sunet::packages::cephadm
38+
file {'/opt/ceph':
39+
ensure => 'directory',
40+
}
41+
$adm_private_key = lookup('adm_private_key', undef, undef, 'NOT_SET_IN_HIERA');
42+
$adm_keyring = lookup('adm_keyring', undef, undef, 'NOT_SET_IN_HIERA');
43+
if $adm_keyring != 'NOT_SET_IN_HIERA' {
44+
file {'/etc/ceph/ceph.client.admin.keyring':
45+
ensure => 'present',
46+
owner => 'root',
47+
group => 'root',
48+
mode => '0600',
49+
content => $adm_keyring,
50+
}
51+
}
52+
if $adm_private_key != 'NOT_SET_IN_HIERA' {
53+
file {'/root/.ssh/id_ed25519_adm':
54+
ensure => 'present',
55+
owner => 'root',
56+
group => 'root',
57+
mode => '0600',
58+
content => $adm_private_key,
59+
}
60+
}
61+
if $adm_public_key != 'NOT_SET_IN_HIERA' {
62+
file {'/root/.ssh/id_ed25519_adm.pub':
63+
ensure => 'present',
64+
owner => 'root',
65+
group => 'root',
66+
mode => '0600',
67+
content => $adm_public_key,
68+
}
69+
}
70+
file {'/opt/ceph/ceph-cluster.yaml':
71+
ensure => 'file',
72+
owner => 'root',
73+
group => 'root',
74+
mode => '0600',
75+
content => template('sunet/ceph/ceph-cluster.erb.yaml'),
76+
}
77+
file {'/opt/ceph/cluster-bootstrap.sh':
78+
ensure => 'file',
79+
owner => 'root',
80+
group => 'root',
81+
mode => '0700',
82+
content => template('sunet/ceph/cluster-bootstrap.erb.sh'),
83+
}
84+
}
85+
elsif $type == 'osd' {
86+
$extra_ports = []
87+
}
88+
elsif $type == 'mds' {
89+
$extra_ports = []
90+
}
91+
elsif $type == 'firstmon' {
92+
include sunet::packages::cephadm
93+
$adm_private_key = lookup('adm_private_key', undef, undef, 'NOT_SET_IN_HIERA');
94+
if $adm_private_key != 'NOT_SET_IN_HIERA' {
95+
file {'/root/.ssh/id_ed25519_adm':
96+
ensure => 'present',
97+
owner => 'root',
98+
group => 'root',
99+
mode => '0600',
100+
content => $adm_private_key,
101+
}
102+
}
103+
if $adm_public_key != 'NOT_SET_IN_HIERA' {
104+
file {'/root/.ssh/id_ed25519_adm.pub':
105+
ensure => 'present',
106+
owner => 'root',
107+
group => 'root',
108+
mode => '0600',
109+
content => $adm_public_key,
110+
}
111+
}
112+
$extra_ports = [ { 'from' => $clients, 'to' => '3300' } ]
113+
file {'/opt/ceph':
114+
ensure => 'directory',
115+
}
116+
file {'/opt/ceph/bootstrap.sh':
117+
ensure => 'file',
118+
owner => 'root',
119+
group => 'root',
120+
mode => '0700',
121+
content => template('sunet/ceph/bootstrap.erb.sh'),
122+
}
123+
file {'/etc/alloy/targets.d/ceph-mgr.yaml':
124+
ensure => 'file',
125+
owner => 'root',
126+
group => 'root',
127+
mode => '0744',
128+
content => template('sunet/ceph/ceph-mgr.yaml'),
129+
}
130+
}
131+
elsif $type == 'mon' {
132+
$extra_ports = [ { 'from' => $clients, 'to' => '3300' } ]
133+
file {'/opt/ceph':
134+
ensure => 'directory',
135+
}
136+
sunet::nftables::allow { 'expose-allow-ssh':
137+
from => $adm,
138+
port => 22,
139+
}
140+
file {'/etc/alloy/targets.d/ceph-mgr.yaml':
141+
ensure => 'file',
142+
owner => 'root',
143+
group => 'root',
144+
mode => '0744',
145+
content => template('sunet/ceph/ceph-mgr.yaml'),
146+
}
147+
}
148+
$internal_nodes = $nodes.map |$node| {
149+
$node['addr']
150+
}
151+
$internal_ports = [ { 'from' => $internal_nodes, 'to' => ['22', '3300', '6800-7300'] } ]
152+
$ceph_ports = $extra_ports + $internal_ports
153+
$ceph_ports.each |$port| {
154+
sunet::nftables::allow { "expose-allow-${port['to']}":
155+
from => $port['from'],
156+
port => $port['to'],
157+
}
158+
}
159+
}

manifests/packages/ceph_common.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# ceph_common
2+
class sunet::packages::ceph_common {
3+
package { 'ceph-common': ensure => installed }
4+
}

manifests/packages/ceph_mds.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# ceph_mds
2+
class sunet::packages::ceph_mds {
3+
package { 'ceph-mds': ensure => installed }
4+
}

manifests/packages/ceph_mon.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# ceph_mon
2+
class sunet::packages::ceph_mon {
3+
package { 'ceph-mon': ensure => installed }
4+
}

manifests/packages/ceph_osd.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# ceph_osd
2+
class sunet::packages::ceph_osd {
3+
package { 'ceph-osd': ensure => installed }
4+
}

manifests/packages/cephadm.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# cephadm
2+
class sunet::packages::cephadm {
3+
package { 'cephadm': ensure => installed }
4+
}

templates/ceph/bootstrap.erb.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/bash
2+
3+
cephadm bootstrap \
4+
--mon-ip "<%= @facts['networking']['ip'] %>" \
5+
--ssh-user root \
6+
--ssh-private-key /root/.ssh/id_ed25519_adm \
7+
--ssh-public-key /root/.ssh/id_ed25519_adm.pub \
8+
--allow-fqdn-hostname \
9+
--allow-overwrite

templates/ceph/ceph-cluster.erb.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<% @nodes.each do |node| %>
2+
---
3+
service_type: <%= node['service_type'] %>
4+
addr: <%= node['addr'] %>
5+
hostname: <%= node['hostname'] %>
6+
<% if node['labels'] %>
7+
labels:
8+
<% node['labels'].each do |label| %>
9+
- <%= label -%>
10+
<% end -%>
11+
<% end -%>
12+
<% end -%>

templates/ceph/ceph-mgr.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- targets:
2+
- 127.0.0.1:9283
3+
labels:
4+
job: ceph
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/bash
2+
3+
ceph="/usr/sbin/cephadm shell ceph"
4+
5+
adm_private_key="$(cat /root/.ssh/id_ed25519_adm)"
6+
adm_public_key="$(ssh-keygen -y -f /root/.ssh/id_ed25519_adm)"
7+
echo "$adm_public_key" > /root/.ssh/id_ed25519_adm.pub
8+
9+
ssh -4 -i /root/.ssh/id_ed25519_adm "<%= @firstmon %>" /opt/ceph/bootstrap.sh # Run bootstrap script on first monitor
10+
scp -4 -i /root/.ssh/id_ed25519_adm "<%= @firstmon %>:/etc/ceph/*" /etc/ceph/ # Copy over config <% monitors = [] %><% osd = [] %><% @nodes.each do |node| %><% hostname = node['hostname'] %>
11+
${ceph} orch host add "<%= hostname %>" "<%= node['addr'] %>" # Add <%= node['hostname'] %><% node['labels'].each do |label| %><% if label == 'mon' %><% monitors.append(node['hostname']) %><% elsif label == 'osd' %><% osd.append(node['hostname']) %><% end %>
12+
${ceph} orch host label add "<%= hostname %>" "<%= label %>" # <% end %><% end %>
13+
${ceph} orch apply -i /rootfs/opt/ceph/nordunet-cephcluster.yaml
14+
15+
adm_keyring="$(cat /etc/ceph/ceph.client.admin.keyring)"
16+
echo "Now run:"
17+
echo -e "\t ./edit-secrets $(hostname -f)"
18+
echo "and add:"
19+
echo "adm_private_key: >"
20+
echo " DEC::PKCS7[$adm_private_key"
21+
echo "]!"
22+
echo "adm_keyring: >"
23+
echo " DEC::PKCS7[$adm_keyring"
24+
echo "]!"
25+
echo -e "\n\n\nFinaly add:"
26+
echo "adm_public_key: '$adm_public_key'"
27+
echo "to the common group.yaml file"

0 commit comments

Comments
 (0)