Настройка доступа по SSH не рассматривается, доступ может быть непосредственно как к localhost, так и к удалённым серверам
-
Установим ansible:
apt-get update && apt-get install -y ansible sshpass
-
Создадим директорию для проекта:
mkdir ansible; cd ansible
-
Создадим инвентарный файл:
-
-
в качестве хоста используется «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
img
-
Создаём playbook-сценарий для установки Nextcloud:
vim playbook.yml
-
содержимое playbook-сценария:
- name: Install OwnCloud on ALT Server 10.1 (10.2)
hosts: localhost
become: true
vars:
mariadb_database: owncloud
mariadb_username: owncloud
mariadb_password: owncloud
url_download_owncloud: https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
dir_download_owncloud: /tmp
path_project_owncloud: /var/www/html/
virtualhost_servername: owncloud.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: "Create a database {{ mariadb_database }} for OwnCloud"
mysql_db:
name: "{{ mariadb_database }}"
encoding: utf8
collation: utf8_unicode_ci
state: present
- name: "Creating a database user {{ mariadb_username }} for OwnCloud"
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-base
- apache2-httpd-prefork
- apache2-mod_php7
- apache2-mod_ssl
state: present
- name: Install PHP7.4 and php modules
apt_rpm:
name:
- php7
- php7-curl
- php7-fileinfo
- php7-gd
- php7-intl
- php7-libs
- php7-mbstring
- php7-pdo
- php7-xmlreader
- php7-zip
- php7-mysqli
- php7-pdo_mysql
state: present
- name: Enable the Apache2 module
apache2_module:
name: "{{ item }}"
state: present
with_items:
- rewrite
- headers
- env
- dir
- mime
- unique_id
- name: Started and enabled Apache2
systemd:
name: httpd2
state: started
enabled: true
- name: Download OwnCloud project
get_url:
url: "{{ url_download_owncloud }}"
dest: "{{ dir_download_owncloud }}"
- name: Unarchive a file project OwnCloud
unarchive:
src: "{{ dir_download_owncloud }}/owncloud-complete-latest.tar.bz2"
dest: "{{ path_project_owncloud }}"
- name: Assign rights to project OwnCloud
file:
path: "{{ path_project_owncloud }}/owncloud/"
recurse: yes
owner: apache2
group: apache2
- name: Setting up a web server to work with OwnCloud
copy:
dest: /etc/httpd2/conf/sites-available/owncloud.conf
content: |
<VirtualHost *:80>
DocumentRoot {{ path_project_owncloud }}/owncloud/
ServerName {{ virtualhost_servername }}
<Directory {{ path_project_owncloud }}/owncloud/>
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/owncloud.conf /etc/httpd2/conf/sites-enabled/
- 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
img
img
-
Проверяем:
img
img
img