Установим ansible:
apt-get update && apt-get install -y ansible sshpass
Создадим директорию для проекта:
mkdir ansible; cd ansible
Создадим инвентарный файл:
в формате «yaml»
в качестве хоста используется «localhost»
содержимое инвентарного файла:
Создадим директорию для переменных хоста:
Определим необходимые переменные для хоста — «localhost»:
vim host_vars/localhost.yml
содержимое файла:
ansible_ssh_user: root # пользователь
ansible_ssh_pass: toor # пароль пользователя
ansible_python_interpreter: /usr/bin/python3 # корректный интерпретатор
Проверяем работоспособность ansible с localhost:
ansible -i inventory -m ping all
Создаём playbook-сценарий для установки OTRS:
-
содержимое playbook-сценария:
---
- name: Deploy Help Desk system 'OTRS' on Alt Server 10.1
hosts: localhost
become: true
vars:
version_postgresql: '15'
postgresql_init_path: /etc/init.d/postgresql
postgresql_data_dir: /var/lib/pgsql/data
db_name: 'otrs'
db_user: 'otrs'
db_pass: 'otrs'
tasks:
- name: Update the package database
apt_rpm:
update_cache: true
- name: Installing the necessary packages
apt_rpm:
name:
- postgresql{{ version_postgresql }}-server
- otrs
- otrs-apache2
- python3-module-psycopg2
- postgresql{{ version_postgresql }}-perl
- perl-DBD-Pg
- apache2-httpd-prefork
state: present
- name: Enable daemon 'httpd2'
systemd:
name: httpd2
enabled: yes
- name: Check system database postgresql
stat:
path: '{{ postgresql_data_dir }}/pg_hba.conf'
register: postgres_data
- name: Initialize system databases
command:
cmd: '{{ postgresql_init_path }} initdb'
when: not postgres_data.stat.exists
- name: Started and enabled postgresql
systemd:
name: postgresql
state: started
enabled: yes
- name: Create PostgreSQL database
postgresql_db:
name: "{{ db_name }}"
- name: Create PostgreSQL user
postgresql_user:
db: "{{ db_name }}"
name: "{{ db_user }}"
password: "{{ db_pass }}"
priv: ALL
state: present
- name: Grant privileges to PostgreSQL user
postgresql_privs:
db: "{{ db_name }}"
privs: ALL
type: database
role: "{{ db_user }}"
state: present
- name: Assign a database owner
postgresql_db:
name: "{{ db_name }}"
owner: "{{ db_user }}"
- name: Add httpd-addon.d=yes to 999-otrs.conf
lineinfile:
path: /etc/httpd2/conf/extra-start.d/999-otrs.conf
line: 'httpd-addon.d=yes'
create: yes
- name: Configuration httpd2
shell: |
alternatives-manual /usr/sbin/httpd2 /usr/sbin/httpd2.prefork
alternatives-update
a2enextra httpd-addon.d
- name: Restarted httpd2
systemd:
name: httpd2
state: restarted
-
Устанавливаем необходимые коллекции для ansible:
ansible-galaxy collection install community.general
ansible-galaxy collection install community.postgresql
-
Запускаем playbook-сценарий:
ansible-playbook -i inventory playbook.yml
-
Проверяем: