Загрузка данных


mkdir RootCA && cd RootCA

openssl req -x509 -sha256 -days 3653 -newkey rsa:2048 -keyout ca.key -out ca.crt

        должно получиться следующее:

[admin01@adm-pc RootCA]$ openssl req -x509 -sha256 -days 3653 -newkey rsa:2048 -keyout ca.key -out ca.crt
......+...+...+..+...+.........+.+...........+...+............+...+...+....+...+...+.....+.........+...+.......+.....+....+.........+........+...+++++++++++++++++++++++++++++++++++++++*......+..+.+++++++++++++++++++++++++++++++++++++++*....+...............+.+.........+.....+.............+.........+.....+....+.....+....+.......................+...+......+......+....+...........+...............+.......+..................+.....+...+.+...+.....+..................+..........+...+.........+......+............+...+......+......+..+............+.............+.....+......+.+...+..+....+............+..+.+..+.......+..+................+........+......+.+..+.......+.....+....+.....+.+...+.....................+.........+..+.+..+...+....+........+.+..+....+........+...+.........+.........+.+...........+...+.+..........................+.......+.....+.+......+.....+.........+.......+..+............+.........+......................+..+...+....+...+........+.......+..+......+.........+...+...+.......+...+.....+...+.+..............+.+......+...+......+...+..+.............+..+.+........+....+..+.+..+.......+...........+...+.........+...+....+......+...+...........+...+..........+..+...............+......+...+....+.....+.+..+...................+...+...........+.........+.+...........+...+.+.....+....+...+.....+.............+.........+...+..+...+....+...+.....+.............+...+......+..............+.+.........+......+......+.....+...+.+.....+.+...+..+........................+...+......+.......+..+.+..++++++
.......+++++++++++++++++++++++++++++++++++++++*..+.....+.+..+....+...+..+......+...+.+..................+...+..+.+.....+......+...+.+..+..........+.....+.......+..+.+...+.....+......+.+..+...............+...+..........+...+..+++++++++++++++++++++++++++++++++++++++*......+...................+..+.......+...++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:au-team.cloud
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:au-team.cloud RootCA
Email Address []:

    Добавим корневой сертификат в локальное хранилище сертификатов:

sudo cp ca.crt /etc/pki/ca-trust/source/anchors/ && sudo update-ca-trust

    Далее на CA создадим закрытый ключ и запрос для gitea
        который соответственно подпишем ранее созданным RootCA

openssl genrsa -out gitea.key 2048

openssl req -key gitea.key -new -out gitea.csr

        должно получиться следующее:

[admin01@adm-pc RootCA]$ openssl req -key gitea.key -new -out gitea.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:au-team.cloud
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:gitea.au-team.cloud
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

    Создаём файл с расширениями для сертификата:

cat <<EOF > gitea.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=@alt_names
[alt_names]
DNS.1=gitea.au-team.cloud
IP.1=192.168.0.102
EOF

    Подписываем запрос и выпускаем сертификат:

openssl x509 -req -CA ca.crt -CAkey ca.key -in gitea.csr -out gitea.crt -days 365 -CAcreateserial -extfile gitea.ext

    Передаём сертификат и закрытый ключ на infra-srv2:

[admin01@adm-pc RootCA]$ scp gitea.crt infra-srv2:~/
gitea.crt                                                                                                                                                           100% 1285   795.5KB/s   00:00    
[admin01@adm-pc RootCA]$ scp gitea.key infra-srv2:~/
gitea.key                                                                                                                                                           100% 1704     1.0MB/s   00:00 

    Далее на CA создадим закрытый ключ и запрос для grafana
        который соответственно подпишем ранее созданным RootCA

openssl genrsa -out grafana.key 2048

openssl req -key grafana.key -new -out grafana.csr

        должно получиться следующее:

[admin01@adm-pc RootCA]$ openssl req -key grafana.key -new -out grafana.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:au-team.cloud
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:grafana.au-team.cloud
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

    Создаём файл с расширениями для сертификата:

cat <<EOF > grafana.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=@alt_names
[alt_names]
DNS.1=grafana.au-team.cloud
IP.1=192.168.0.103
EOF

    Подписываем запрос и выпускаем сертификат:

openssl x509 -req -CA ca.crt -CAkey ca.key -in grafana.csr -out grafana.crt -days 365 -CAcreateserial -extfile grafana.ext

    Передаём сертификат и закрытый ключ на infra-srv3:

[admin01@adm-pc RootCA]$ scp grafana.crt infra-srv3:~/
grafana.crt                                                                                                                                                         100% 1289   659.7KB/s   00:00    
[admin01@adm-pc RootCA]$ scp grafana.key infra-srv3:~/
grafana.key                                                                                                                                                         100% 1704     1.0MB/s   00:00

 
INFRA-SRV2:

    Для корректного доступа по имени реализуем обратный прокси сервер:
        установим пакет nginx

sudo su -

apt-get update && apt-get install -y nginx

     
    Создаём директорию для сертификатов:

mkdir /etc/nginx/ssl

    Перемещаем сертификат и закрытый ключ в созданную директорию:

mv /home/admin01/gitea.crt /etc/nginx/ssl
mv /home/admin01/gitea.key /etc/nginx/ssl

    Создаём конфигурационный файл /etc/nginx/sites-available.d/gitea.conf для обратного прокси:

server {
	listen 443 ssl;
	server_name gitea.au-team.cloud;
	ssl_certificate /etc/nginx/ssl/gitea.crt;
	ssl_certificate_key /etc/nginx/ssl/gitea.key;
	
	location / {
		proxy_pass http://127.0.0.1:3000;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

server {
	listen 80;
	server_name gitea.au-team.cloud;
	return 301 https://$host$request_uri;
}

    Добавляем символьную ссылку:

ln -s /etc/nginx/sites-available.d/gitea.conf /etc/nginx/sites-enabled.d/

    Включаем и добавляем в автозагрузку службу nginx:

systemctl enable --now nginx

    В файле /etc/gitea/app.ini необходимо отредактировать и привести к следующему виду параметры:

    Перезапускаем службу gitea:

systemctl restart gitea

 
INFRA-SRV3:

    Для корректного доступа по имени реализуем обратный прокси сервер:
        установим пакет nginx

sudo su -

apt-get update && apt-get install -y nginx

    Создаём директорию для сертификатов:

mkdir /etc/nginx/ssl

    Перемещаем сертификат и закрытый ключ в созданную директорию:

mv /home/admin01/grafana.crt /etc/nginx/ssl
mv /home/admin01/grafana.key /etc/nginx/ssl

    Создаём конфигурационный файл /etc/nginx/sites-available.d/grafana.conf для обратного прокси:

server {
	listen 443 ssl;
	server_name grafana.au-team.cloud;
	ssl_certificate /etc/nginx/ssl/grafana.crt;
	ssl_certificate_key /etc/nginx/ssl/grafana.key;
	
	location / {
		proxy_pass http://127.0.0.1:3000;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

server {
	listen 80;
	server_name grafana.au-team.cloud;
	return 301 https://$host$request_uri;
}

    Добавляем символьную ссылку:

ln -s /etc/nginx/sites-available.d/grafana.conf /etc/nginx/sites-enabled.d/

    Включаем и добавляем в автозагрузку службу nginx:

systemctl enable --now nginx

 
INFRA-SRV1:

    Добавляем DNS-записи:

sudo su -

echo "P@ssw0rd" | kinit admin

 
ADM-PC:

    Проверяем доступ по https://gitea.au-team.cloud:

    Проверяем доступ по https://grafana.au-team.cloud:

    Из-под пользователя admin01 в веб-интерфейсе https://gitea.au-team.cloud/ должен быть создан приватный репозиторий с именем cod-infra-iac:

    Результат:

    Переходим в директорию ~/infra/:

cd ~/infra/

    Добавляем в файл .gitignore следующую информацию:

cat <<EOF >> .gitignore
terraform/.terraform/
terraform/*.tfstate*
terraform/.terraform.lock.*
terraform/*.tfvars
EOF

    Добавляем все файлы для отслеживания через git:

git add .

git commit -m "first commit"

    Синхранисируем с удалённым репозиторием в gitea:

git checkout -b main

git remote add origin https://gitea.au-team.cloud/admin01/cod-infra-iac.git

git push -u origin main

        должно получиться следующее:

    Проверить наличие файлов в веб-интерфейсе: