Всем привет.
Продолжим наши фокусы. Начало здесь.
5. Поднять контейнер с jenkins внутри
docker pull jenkins
Стартуем новый контейнер:
Внимание! В таком старте jenkins захватит консоль ssh. Два пути отсюда, либо с ключом -d демон либо stop/start из другой консоли
docker run --name myjenkins -p 8080:8080 jenkins
-OR-
docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /home/user00:/var/jenkins_home jenkins
Первый вход в frontend jenkins:
http://IP_адрес_хоста:8080
Создаем пользователя для frontend jenkins.
Была проблема с повторным входом в frontend jenkins.
Решение нашел такое:
Just change the "useSecurity" element to false in the /var/lib/jenkins/config.xml file.
This way you will be able to login and reset the password if needed.
<useSecurity>false</useSecurity>
Однако после такой правки вход включился анонимный, который так и остался(.
6. После настройки jenkins создать джоб который при запуске будет ротировать логи zabbix:
Обычно это в General tab, в секции Build выбрать Execute shell.
Добавить скрипт:
ssh $UserName@$ServerName "bash sudo logrotate -f /etc/logrotate.conf"
-OR-
sudo logrotate -fv /etc/logrotate.conf
-OR-
sshpass -p password ssh -t -t ${USERNAME}@${HOSTNAME} '(
pwd
ls -l
sudo logrotate -fv /etc/logrotate.conf
)'
Не забыть сказать что джоб с параметрами UserName и ServerName.
Однако я доставлял плагин "SSH plugin".
После в Config system, далее в разделе SSH remote hosts ввел инфу для SSH sites.
Тогда в секции Build можно выбрать Execute shell on remote host using ssh.
Тогда SSH site как user00@$IP_адрес_хоста:22
А Command как: sudo logrotate -fdv /etc/logrotate.conf
Однако джоб упадет ибо sudo ждет ввода пароля.
Для того чтобы не вводить пароль юзера в удаленном скрипте на хосте в
/etc/sudoers следует добавить by Visudo!
Defaults visiblepw
или
user00 ALL=(ALL) NOPASSWD: logrotate
...
Все равно на выходе получил FAILURE:
Started by user anonymous
Building in workspace /var/jenkins_home/my_test/sh
[SSH] script:
sudo logrotate -f /etc/logrotate.conf
[SSH] executing...
[SSH] completed
[SSH] exit-status: 1
Build step 'Execute shell script on remote host using ssh' marked build as failure
Finished: FAILURE
7. Настроить sftp доступ к логам zabbix /var/log/zabbix (readonly)
New group sftpusers и создали нового юзера user01.
id user01
Проведем небольшие изменения в доступах:
/etc/ssh/sshd_config
#Subsystem sftp /usr/lib64/misc/sftp-server
Subsystem sftp internal-sftp
Match User user01
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ForceCommand internal-sftp
ChrootDirectory /var/log
>service sshd restart
Это все, конец.
Для справки получить IP-адреса всех запущенных контейнеров:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" $(docker ps -a -q)
docker01 172.17.0.1
mysql 172.17.0.2
zabbix-server 172.17.0.3
zabbix-web 172.17.0.4
myjenkins 172.17.0.5
zabbix-agent 172.31.1.100
В итоге задание считается выполненным когда:
+ есть доступ из мира по http\https на zabbix и jenkins
- jenkins job корректно работает с логротейтом
+ в zabbix видны триггеры (проверка доступности всего поднятого), графики по ЦП, ОЗУ
+ есть доступ к логам по sftp
- все стабильно работает и поднимается в том же состоянии после перезагрузки
Для первого раза для полного нуба в СI три пункта из пяти. Тем не менее было интересно и познавательно. Спасибо всем кто помогал советами, а Даниле отдельное спасибо за науку.
Увидимся.
Разное:
ReplyDeleteКак изменять файлы в контейнере?
>docker cp CONTAINER:FILEPATH LOCALFILENAME
>vi LOCALFILENAME
>docker cp LOCALFILENAME CONTAINER:FILEPATH
Если это конфиг то сервис(или контейнер) надо перестартовывать.
Но рестарт контейнера влечет за собой предыдущую версию конфига.
Автостарт контейнера.
Docker умеет самостоятельно перезапускать контейнеры в
случае их падения и даже запускать их во время старта системы.
Все, что для этого нужно?сделать, — просто использовать опцию —restart:
--restart=always
docker commit container-id new-image-name
docker run --name mysql-server --restart=always mysql-save
Где логи контейнера?
docker inspect --format='{{.LogPath}}' container
Вывод файла с номерами строк:
nl -ba file
Чей паблик ключ в профиле?
ssh-keyscan -t rsa 127.0.0.1
Избавиться от ввода password SSH?
PasswordAuthentication no
UsePAM no
Имя хоста:
hostname
hostnamectl