Установка Nextcloud на Альт Сервер 10.1

https://sysahelper.gitbook.io/sysahelper/main/authomatization/main/nextcloud

 

Установим ansible:

apt-get update && apt-get install -y ansible sshpass

Создадим директорию для проекта:

mkdir ansible; cd ansible

Создадим инвентарный файл:

в формате «yaml»
в качестве хоста используется «localhost»
vim inventory
  • содержимое инвентарного файла:
all:
  hosts:
    localhost:

Создадим директорию для переменных хоста:

mkdir host_vars

Определим необходимые переменные для хоста — «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-сценарий для установки Nextcloud:

vim playbook.yml

содержимое playbook-сценария:

---
- name: Install Nextcloud on ALT Server 10.1 (10.2)
  hosts: localhost
  become: true 
  
  vars:
    mariadb_database: nextcloud
    mariadb_username: nextcloud
    mariadb_password: nextcloud
    url_download_nextcloud: https://download.nextcloud.com/server/releases/latest.zip
    dir_download_nextcloud: /tmp
    path_project_nextcloud: /var/www/html/
    virtualhost_servername: nextcloud.test.local

  tasks:
    - name: Install database MariaDB
      apt_rpm:
        name: 
          - mariadb-server
          - python3-module-mysqlclient
        state: present
        update_cache: true

    - name: Started and enabled mariadb-server
      systemd:
        name: mariadb
        state: started
        enabled: true

    - name: "Creating a database {{ mariadb_database }} for Nextcloud"
      mysql_db:
        name: "{{ mariadb_database }}"
        encoding: utf8
        collation: utf8_unicode_ci
        state: present

    - name: "Creating a database user {{ mariadb_username }} for Nextcloud"
      mysql_user:
        name: "{{ mariadb_username }}"
        password: "{{ mariadb_password }}"
        priv: "{{ mariadb_database }}.*:ALL,GRANT"
        host: localhost
        state: present

    - name: Install web-server Apache2 and modules
      apt_rpm:
        name: 
          - apache2
          - apache2-mod_ssl
          - apache2-mod_php8.2
          - tzdata
        state: present

    - name: Install PHP8.2 and php modules
      apt_rpm:
        name:
          - php8.2
          - php8.2-pdo_mysql
          - php8.2-curl
          - php8.2-dom
          - php8.2-ldap
          - php8.2-exif
          - php8.2-fileinfo
          - php8.2-gd2
          - php8.2-gmp
          - php8.2-imagick
          - php8.2-intl
          - php8.2-libs
          - php8.2-mbstring
          - php8.2-memcached
          - php8.2-opcache
          - php8.2-openssl
          - php8.2-pcntl
          - php8.2-pdo
          - php8.2-xmlreader
          - php8.2-zip

    - name: Enable the Apache2 module
      apache2_module:
        name: "{{ item }}"
        state: present
      with_items:
        - dir
        - env
        - headers
        - mime
        - rewrite

    - name: Started and enabled Apache2
      systemd:
        name: httpd2
        state: started
        enabled: true

    - name: Download Nextcloud project
      get_url:
        url: "{{ url_download_nextcloud }}"
        dest: "{{ dir_download_nextcloud }}"

    - name: Unarchive a file project Nextcloud
      unarchive:
        src: "{{ dir_download_nextcloud }}/latest.zip"
        dest: "{{ path_project_nextcloud }}"

    - name: Create directory "data" for Nextcloud
      file:
        path: "{{ path_project_nextcloud }}/nextcloud/data"
        state: directory

    - name: Assigning rights to project Nextcloud
      file:
        path: "{{ path_project_nextcloud }}/nextcloud/"
        recurse: yes
        owner: root

    - name: Assigning rights to project Nextcloud
      file:
        path: "{{ path_project_nextcloud }}/nextcloud/{{ item }}"
        recurse: yes
        owner: apache2
      with_items:
        - apps
        - config
        - data

    - name: Setting up a web server to work with Nextcloud
      copy:
        dest: /etc/httpd2/conf/sites-available/nextcloud.conf
        content: | 
          <VirtualHost *:80>
            DocumentRoot {{ path_project_nextcloud }}/nextcloud/
            ServerName {{ virtualhost_servername }}

            <Directory {{ path_project_nextcloud }}/nextcloud/>
              Require all granted
              AllowOverride All
              Options FollowSymLinks MultiViews

              <IfModule mod_dav.c>
                Dav off
              </IfModule>
            </Directory>
          </VirtualHost>

    - name: Adding a symbolic link
      command:
        cmd: ln -s /etc/httpd2/conf/sites-available/nextcloud.conf /etc/httpd2/conf/sites-enabled/
#      file:
#        src: /etc/httpd2/conf/sites-available/nextcloud.conf
#        dest: /etc/httpd2/conf/sites-enabled/
#        state: link

    - name: Restarted Apache2
      systemd:
        name: httpd2
        state: restarted

Устанавливаем необходимые коллекции для ansible:

ansible-galaxy collection install community.general
ansible-galaxy collection install community.mysql

Запускаем playbook-сценарий:

ansible-playbook -i inventory playbook.yml

 

 

Проверяем: