Была как-то у меня задача поставить Jenkins на ALT Linux. Как вы знаете, эта ОС достаточно специфична, в виду использования своего мощного репозитория sisyphus, а также менеджера пакетов apt-rpm. Кроме того, многие пакеты имеют своё неповторимое название.
Итак, ниже YAML-playbook Ansible для установки Jenkins, а также файл inventory для работы нашего playbook:
########################### WARNING!!!! ##########################
# #
# After install Jenkins, you must change listen port of it #
# from 8080 to 8081 in: #
# #
# /usr/lib/systemd/system/jenkins.service #
# #
# Also, where is now Jenkins repo for apt-rpm OS. In this #
# case, you must download latest Jenkins rpm yourself. #
# #
##################################################################
---
- name: Install Jenkins
hosts: altjenkins
become: yes
tasks:
- name: Pre-install needed packages
apt_rpm: pkg={{ item }} update_cache=yes state=present
loop: [ 'ca-certificates', 'fontconfig', 'java-11-openjdk' ]
- name: Copy rpm
copy: src=files/jenkins-2.379-1.1.noarch.rpm dest=/home/admin/jenkins-2.379-1.1.noarch.rpm owner=admin mode=0644
- name: Install Jenkins package
apt_rpm:
name: /home/admin/jenkins-2.379-1.1.noarch.rpm
state: present
Файл inventory:
[test_WEB] altjenkins ansible_host=192.168.88.17
В заголовке скрипта я оставил напоминание о том, что в ALT Linux стандартный порт для Jenkins занят встроенным web-приложением для управления ОС, поэтому неплохо было бы поменять порт, и написал где.
Так же стоит обратить внимание на то, что rpm-пакет придётся скачать самостоятельно, лучше на официальном сайте: https://get.jenkins.io/redhat/. Затем, копируем пакет в папку files/, чтобы наш playbook мог использовать его.
Естественно, мы должны обеспечить доступность по протоколу SSH для ansible с нашего компьютера до сервера, где хотим настроить Jenkins. Я обычно использую авторизацию по ключам и создаю отдельного пользователя ansible, но вы также можете прописать ansible_user (любой пользователь с правами sudo) и ansible_password (его пароль) в файле inventory:
[test_WEB] altjenkins ansible_host=192.168.88.17 ansible_user=admin134 ansible_password=nashkrutojPa$$