Мотивация такова: Capistrano недоопакечен, значит его никто не использует. Кроме того, Capistrano использует собственную структуру каталогов для размещения релизов, и вероятно эта структура каталогов не совпадает с политикой управления версиями в пакетном менеджере операционной системы. Если нет знаний ни по Ansible, ни по Capistrano, то нет разницы, какую из них начинать изучать. В то же время для последующего распространения приложения имеет значение что админов без знания Rake и Ruby больше, чем админов со знанием этих продуктов.
https://en.wikipedia.org/wiki/Ansible_(software)
https://ru.wikipedia.org/wiki/Ansible
https://github.com/ansible/ansible
https://packages.debian.org/bookworm/ansible-core
https://stackoverflow.com/questions/tagged/ansible
2022, James Freeman, Mastering Ansible : automate configuration management and overcome deployment challenges with Ansible (4-th ed), 540 pages
Library Genesis # 3169696
«This book will provide you with the knowledge and skills required to truly understand
how Ansible functions at a fundamental level, including all the latest features and changes
since the release of version 3.0»
(это вообще как, если последняя версия v2.15.1rc1
https://github.com/ansible/ansible/releases)
«System configuration is defined in part by using its own declarative language … The automation jobs are written in YAML»
Ansible Documentation
«study plan, you can follow these steps:
-
Start by familiarizing yourself with the prerequisites and make sure you have hands-on experience with running commands in a Linux shell.
-
Install Ansible on your control node, which can be your laptop or any machine with Ansible installed.
-
Learn about Ansible Playbooks, which are YAML files that define the desired state of a system and contain plays and tasks.
-
Understand Ansible Modules and how they are used in tasks to perform specific actions on managed nodes.
-
Explore Ansible Variables and how they can be used to manage differences between systems and alter the behavior of playbooks.
-
Dive into Ansible Conditionals and learn how to use them to control the flow of execution in a playbook based on specific conditions.
-
Practice writing and executing simple playbooks, starting with basic tasks and gradually incorporating more advanced concepts like variables and conditionals.
-
Explore additional concepts and features of Ansible, such as Ansible Inventory, Ansible Roles, and Collections, as you progress in your learning journey.
»
Для начала нужно: установить ansistrano (после ansible). Это набор “ролей”. Роли надо вписать в описание “Inventory”, а затем как-то использовать в тексте Playbook-Play-Task-ов.
К ansistrano нет пакета в
- Debian – Package Search Results – ansistrano
- Gentoo Основное дерево, Сторонние пакеты
Предлагается использовать для установки команду
$ ansible-galaxy install carlosbuenosvinos.ansistrano-deploy carlosbuenosvinos.ansi
(но это приведёт к нарушению политики “не устанавливать выполняемый код в обход пакетного менеджера операционной системы”)
Ansistrano создаёт на целевом хосте структуру директорий, очень похожую на такую же у Capistrano (наверное в Ansistrano это можно поменять, но надо думать как).
В общем, в связи с неопакеченностью Ansistrano текущий подход такой:
- добиться устанавливаемости моей программы в пакетном менеджере дистрибутива
- автоматизировать эти команды при помощи чего-нибудь (будет ли это Ansible или тупо bash-скрипт через ssh пока неизвестно. Кривая обучения - она такая…)
Для того, чтобы что-нибудь установить в Gentoo нужно:
- собрать бинарники локально (или на билд-сервере)
- закачать бинарники в бинарный кеш на хостинге
это можно сделать через утилиту rsync (и демона rsync, работающего на хостинге) через ssh.
В man по rsync написано как:
«There are two different ways for rsync to contact a remote system: using a remote-shell program as the transport (such as ssh or rsh) or contacting an rsync daemon directly via TCP. The remote-shell transport is used whenever the source or destination path contains a single colon (:
) separator after a host specification. Contacting an rsync daemon directly happens when the source or destination path contains a double colon (::
) separator after a host specification»
Несколько примеров типовых команд:
How to Transfer Files with Rsync over SSH {With Examples}
- выполнить команду установки бинарного пакета
emerge -GK имяпакета
- выполнить команду установки веб-приложения
webapp-config -U имяпакета нов.ая.вер.сия [-h адресхоста] [-d директория]
https://wiki.gentoo.org/wiki/Webapp-config
- возможно ещё какие-то команды (вроде обновления БД, но это неточно)