Добро пожаловать в наше руководство по установке Semaphore Ansible Web UI в Ubuntu / Debian.
Semaphore – это альтернатива Ansible Tower с открытым исходным кодом. Он позволяет запускать и управлять Ansible Tasks из веб-интерфейса.
Semaphore имеет следующие зависимости:
- MySQL >= 5.6.4/MariaDB >= 5.3
- ansible
- git >= 2.x
Мы рассмотрим установку Semaphore в линейке дистрибутивов Debian и Ubuntu.
Как установить Semaphore в Ubuntu / Debian
Вот шаги, которые вы должны выполнить, чтобы установить Semaphore в системе Ubuntu / Debian.
Шаг 1: Обновите систему и установите git
Начните работу с обновленной системы с установленным git.
sudo apt-get update sudo apt-get -y install git curl wget
Убедитесь, что установлена версия Git = 2.x.
# Ubuntu 18.04 $ git --version git version 2.17.1 # Debian 9 $ git --version git version 2.11.0
Шаг 2: Установите Ansible
Добавьте Ansible PPA репозиторий и установите Ansible.
Для Ubuntu
sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible -y
Для Debian 9
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/ansible.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 sudo apt update sudo apt-get install ansible -y
Подтвердите, что Ansible установлен.
$ ansible --version ansible 2.7.9 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
Шаг 3: Установите сервер базы данных MariaDB / MySQL
Вы можете выбрать сервер базы данных MySQL или MariaDB.
Мы сделаем на примере MariaDB в этом уроке.
sudo apt-get -y install mariadb-server
Установите пароль root при появлении запроса.
Шаг 4: Скачайте Semaphore
Посетите страницу релизов и скопируйте ссылку на скачивание для вашей ОС.
wget https://github.com/ansible-semaphore/semaphore/releases/download/v2.5.1/semaphore_2.5.1_linux_amd64.deb
Установите загруженный пакет Debian.
$ sudo dpkg -i semaphore_2.5.1_linux_amd64.deb Selecting previously unselected package semaphore. (Reading database … 38297 files and directories currently installed.) Preparing to unpack semaphore_2.5.1_linux_amd64.deb … Unpacking semaphore (2.5.1) … Setting up semaphore (2.5.1) …
Проверьте, есть ли у вас двоичный файл в вашем $PATH.
$ which semaphore /usr/bin/semaphore $ semaphore -version v2.5.1
Шаг 4: Настройка Semaphore
Выполните следующую команду, чтобы запустить установку в вашей системе.
# semaphore -setup Hello! You will now be guided through a setup to: Set up configuration for a MySQL/MariaDB database Set up a path for your playbooks (auto-created) Run database Migrations Set up initial semaphore user & password DB Hostname (default 127.0.0.1:3306): 127.0.0.1:3306 DB User (default root): root DB Password: <root Password> DB Name (default semaphore): semaphore Playbook path (default /tmp/semaphore): /opt/semaphore Web root URL (optional, example http://localhost:8010/): http://localhost:8010/ Enable email alerts (y/n, default n): n Enable telegram alerts (y/n, default n): n Enable LDAP authentication (y/n, default n): n
Если вы решите включить оповещения по электронной почте / телеграмме или аутентификацию LDAP, установите соответствующие значения.
Подтвердите сгенерированную конфигурацию и согласитесь начать установку.
Generated configuration: { "mysql": { "host": "127.0.0.1:3306", "user": "root", "pass": "password", "name": "semaphore" }, "port": "", "tmp_path": "/opt/semaphore", "cookie_hash": "0Jpz8DrxGg02+Bx7P3lDPa+Tdu0nOEw6HwKMu22Oo60=", "cookie_encryption": "I3hI3Fgitr5OMOOWmnaR59hxLUP6FlnAPdL/WJbSlO0=", "email_sender": "", "email_host": "", "email_port": "", "web_host": "http://localhost:8010/", "ldap_binddn": "", "ldap_bindpassword": "", "ldap_server": "", "ldap_searchdn": "", "ldap_searchfilter": "", "ldap_mappings": { "dn": "", "mail": "", "uid": "", "cn": "" }, "telegram_chat": "", "telegram_token": "", "concurrency_mode": "", "max_parallel_tasks": 0, "email_alert": false, "telegram_alert": false, "ldap_enable": false, "ldap_needtls": false }
Убедитесь, что эти значения верны, чтобы начать настройку.
Is this correct? (yes/no): yes Config output directory (default /root): WARN[0037] An input error occured:unexpected newline Running: mkdir -p /root.. Configuration written to /root/config.json.. Pinging db.. Running DB Migrations.. Checking DB migrations Creating migrations table ...... Migrations Finished
Установите имя пользователя
Username: itsecforu Email: itsecforus@example.com WARN[0268] sql: no rows in result set level=Warn Your name: computingforgeeks Password: StrongPassword You are all setup computingforgeeks! Re-launch this program pointing to the configuration file ./semaphore -config /root/config.json To run as daemon: nohup ./semaphore -config /root/config.json & You can login with itsecforu@example.com or itsecforu.
Вы можете установить другие значения конфигурации в файле /root/config.json.
Шаг 5: Запустите cервис
Теперь, когда мы завершили настройку, давайте начнем.
semaphore -config /root/config.json &
Шаг 6: Настройте Systemd
Теперь давайте настроим пользовательский интерфейс Semaphore Ansible для управления системой systemd.
Создайте файл системного сервисного модуля.
sudo vim /etc/systemd/system/semaphore.service
Добавьте
[Unit] Description=Semaphore Ansible UI Documentation=https://github.com/ansible-semaphore/semaphore Wants=network-online.target After=network-online.target [Service] Type=simple ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/bin/semaphore -config /etc/semaphore/config.json SyslogIdentifier=semaphore Restart=always [Install] WantedBy=multi-user.target
Создать каталог конфигураций:
sudo mkdir /etc/semaphore
Скопируйте файл конфигурации в созданный каталог:
sudo ln -s /root/config.json /etc/semaphore/config.json
Убейте процесс
sudo pkill semaphore
Подтверждение:
ps aux | grep sema
Перезагрузите systemd и запустите сервис.
sudo systemctl daemon-reload sudo systemctl start semaphore
Проверьте статус, чтобы увидеть, что служба работает:
$ systemctl status semaphore ● semaphore.service - Semaphore Ansible UI Loaded: loaded (/etc/systemd/system/semaphore.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2019-04-04 22:49:24 CEST; 31s ago Docs: https://github.com/ansible-semaphore/semaphore Main PID: 9779 (semaphore) CGroup: /system.slice/semaphore.service └─9779 /usr/bin/semaphore -config /etc/semaphore/config.json Apr 04 22:49:24 mydebian systemd[1]: Started Semaphore Ansible UI. Apr 04 22:49:24 mydebian semaphore[9779]: Using config file: /etc/semaphore/config.json Apr 04 22:49:24 mydebian semaphore[9779]: Semaphore v2.5.1 Apr 04 22:49:24 mydebian semaphore[9779]: Port :3000 Apr 04 22:49:24 mydebian semaphore[9779]: MySQL root@127.0.0.1:3306 semaphore Apr 04 22:49:24 mydebian semaphore[9779]: Tmp Path (projects home) /opt/semaphore Apr 04 22:49:24 mydebian semaphore[9779]: Checking DB migrations
Установите службу для запуска при загрузке системы.
$ sudo systemctl enable semaphore Created symlink /etc/systemd/system/multi-user.target.wants/semaphore.service → /etc/systemd/system/semaphore.service.
Порт 3000 должен быть открыт
# ss -tunelp | grep 3000 tcp LISTEN 0 128 :::3000 :::* users:(("semaphore",pid=9779,fd=3)) uid:999 ino:45866 sk:6 v6only:0 <->
Шаг 7: Доступ к веб-интерфейсу Semaphore
В вашем веб-браузере откройте IP-адрес сервера семафора на порту 3000.