{"id":29703381,"url":"https://github.com/thedumbtechguy/ansible-role-semaphore","last_synced_at":"2025-10-08T06:09:21.934Z","repository":{"id":149738107,"uuid":"89099035","full_name":"thedumbtechguy/ansible-role-semaphore","owner":"thedumbtechguy","description":"An ansible role to bootstrap Ansible Semaphore","archived":false,"fork":false,"pushed_at":"2017-05-12T13:19:40.000Z","size":30,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-23T13:52:20.063Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thedumbtechguy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-04-22T21:03:44.000Z","updated_at":"2021-03-12T08:19:11.000Z","dependencies_parsed_at":"2023-05-05T21:32:21.192Z","dependency_job_id":null,"html_url":"https://github.com/thedumbtechguy/ansible-role-semaphore","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/thedumbtechguy/ansible-role-semaphore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedumbtechguy%2Fansible-role-semaphore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedumbtechguy%2Fansible-role-semaphore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedumbtechguy%2Fansible-role-semaphore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedumbtechguy%2Fansible-role-semaphore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thedumbtechguy","download_url":"https://codeload.github.com/thedumbtechguy/ansible-role-semaphore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedumbtechguy%2Fansible-role-semaphore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278897846,"owners_count":26064890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-23T13:39:45.321Z","updated_at":"2025-10-08T06:09:21.928Z","avatar_url":"https://github.com/thedumbtechguy.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Role: Semaphore\n\nAn ansible role to install and configure [Ansible Semaphore](https://github.com/ansible-semaphore/semaphore)\n\nThis role contains a shell script to bootstrap ansible and semaphore. It handles the setup and installation of all required dependencies.\n\n## Requirements\n\n- wget: Required to download `bootstrap.sh`.\n- [thedumbtechguy.configure-ansible](https://galaxy.ansible.com/thedumbtechguy/configure-ansible/): Required to setup ansible. Installed if not available.\n- [thedumbtechguy.logrotate](https://galaxy.ansible.com/thedumbtechguy/logrotate/): Required to setup logrotate. Installed if not available.\n- [thedumbtechguy.mariadb](https://galaxy.ansible.com/thedumbtechguy/mariadb/): Required to setup mariadb. Installed if not available.\n\n\u003e This role has been tested on `Ubuntu 16.04` and `Ubuntu 16.10` only.\n\n## Bootstrap Installation\n\nIf this is a new server, you will want to set the hostname first (`hostname server.domain.tld`).\n\nCopy and run the following command\n\n```shell\nsudo apt-get install -y wget \u0026\u0026\n  mkdir /tmp/bootstrap \u0026\u0026\n  cd /tmp/bootstrap \u0026\u0026\n  wget https://raw.githubusercontent.com/thedumbtechguy/ansible-semaphore-bootstrap/master/bootstrap.sh \u0026\u0026\n  sudo sh bootstrap.sh init\n```\n\nYou can then customize the configuration in `vars.json` and run `sudo sh bootstrap.sh execute`.\n\n## Variables\n\n- `semaphore_version`: version to install.\n  - Default: `2.3.0`\n  - Options:\n    - `2.2.0`\n    - `2.3.0`\n- `semaphore_port`: port to listen on.\n  - Default: `3000`\n\n- `semaphore_db_name`: the name of the database to create for semaphore.\n  - Default: `semaphore`\n- `semaphore_db_auth_user`: the name of the application's database user.\n  - Default: `semaphore`\n- `semaphore_db_auth_password`: the password of the application's database user.\n  - **Required**\n- `semaphore_db_auth_privileges`: the privileges to grant the application's database user.\n  - Default: `*.*:ALL`\n\n- `semaphore_config_auth_name`: the name of the default semaphore application user.\n  - Default: `Admin`\n- `semaphore_config_auth_email`: the email of the default semaphore application user.\n  - Default: `root`\n- `semaphore_config_auth_username`: the user of the default semaphore application user.\n  - Default: `admin`\n- `semaphore_config_auth_password`: the password of the default semaphore application user.\n  - **Required**\n\n- `semaphore_config_data_dir`: where to store semaphore config and playbook files.\n  - Default: `/var/lib/semaphore`\n- `semaphore_config_log_path`: where to store log files.\n  - Default: `/var/log/semaphore`\n\n- `semaphore_config_email_alerts_enable`: enable email alertss.\n  - Default: `no`\n- `semaphore_config_email_alerts_server`: smtp server.\n  - Default: `localhost`\n- `semaphore_config_email_alerts_port`: smtp port.\n  - Default: `25`\n- `semaphore_config_email_alerts_sender`: email sender address.\n  - Default: `semaphore@localhost`\n- `semaphore_config_web_root`: the web root which you would use to access the application. used in generating urls in alerts.\n  - Default: `http://{{ ansible_fqdn }}:{{ semaphore_port }}/`\n\n- `semaphore_config_telegram_alerts_enable`: enable telegram alerts.\n  - Default: `no`\n- `semaphore_config_telegram_alerts_bot_token`: get from @BotFather.\n  - Default: `''`\n- `semaphore_config_telegram_alerts_chat_id`: your telegram chat id.\n  - Default: `''`\n\n- `semaphore_config_ldap_enable`: enable ldap authentication.\n  - Default: `no`\n- `semaphore_config_ldap_server`: ldap server.\n  - Default: `localhost`\n- `semaphore_config_ldap_port`: ldap port.\n  - Default: `389`\n- `semaphore_config_ldap_use_tls`: use tls when connecting to the ldap server.\n  - Default: `no`\n- `semaphore_config_ldap_bind_dn`: bind dn.\n  - Default: `cn=user,ou=users,dc=example.tld`\n- `semaphore_config_ldap_bind_password`: .\n  - Default: `pa55w0rd`\n- `semaphore_config_ldap_search_dn`: search dn.\n  - Default: `ou=users,dc=example.tld`\n- `semaphore_config_ldap_search_filter`: search filter.\n  - Default: `(uid=%s)`\n- `semaphore_config_ldap_mapping_dn_field`: mapping to dn field.\n  - Default: `dn`\n- `semaphore_config_ldap_mapping_username_field`: mapping to username field.\n  - Default: `uid`\n- `semaphore_config_ldap_mapping_fullname_field`: mapping to fullname field.\n  - Default: `cn`\n- `semaphore_config_ldap_mapping_email_field`: mapping to email field.\n  - Default: `mail`\n\n- `semaphore_service_user_name`: account that will run applicatio service. don't run under root.\n  - Default: `semaphore`\n  \u003e **NOTE**: if user does not exist, a service account will be created.\n- `semaphore_service_user_password`: password of account that will run the password service.\n  - **Required**\n  \u003e **NOTE**: not providing this will allow grant passwordless sudo to the account.\n  \u003e\n  \u003e password is needed to run local playbooks from semaphore via `become_password`.\n  \u003e\n  \u003e Password should be an encrypted value compatible with the [ansible user module](http://docs.ansible.com/ansible/user_module.html).\n  \u003e\n  \u003e  You can create one using: `python -c 'import crypt; print crypt.crypt(\"This is the password\", \"$1$ThisIsSomeSalt$\")'`\n\n### Bootstrapping\n\nThese variables are relevant only to the bootstrapping process and can be modified in the generated `vars.json` file.\n\n- `semaphore_db_admin_home`: directory to store .my.cnf for mariadb.\n  - Default: `/root`\n- `semaphore_db_admin_user`: database admin username.\n  - Default: `admin`\n- `semaphore_db_admin_password`: database admin password.\n  - **Required**\n\n- `semaphore_ansible_cfg_vault_password`: vault password.\n  - Default: `''`\n- `semaphore_ansible_cfg_vault_password_file`: location of vault password file.\n  - Default: `/var/lib/semaphore/.vpf`\n\n- `semaphore_ansible_cfg_host_key_checking`: enable host key checking.\n  - Default: `False`\n  - Options:\n    - `True`\n    - `False`\n- `semaphore_ansible_cfg_ansible_managed`: ansible managed string for managed files. used by some roles.\n  - Default: `DO NOT MODIFY by hand. This file is under control of Ansible on {host}.`\n\n\n## Usage Example\n\n```yaml\n- hosts: all\n  vars:\n    semaphore_config_auth_email: 'username@company.tld'\n    semaphore_config_auth_password: '4dm1nPa55w0rd'\n    semaphore_service_user_password: '$1$ThisIsSo$RwIOJHdSWIzAJjbvBdbOZ0'\n    semaphore_ansible_cfg_vault_password: 'pa55w0rd'\n  roles:\n    - thedumbtechguy.semaphore\n```\n\n\n## License\n\nMIT / BSD\n\n## Author Information\n\nThis role was created by [TheDumbTechGuy](https://github.com/thedumbtechguy) ( [twitter](https://twitter.com/frostymarvelous) | [blog](https://thedumbtechguy.blogspot.com) | [galaxy](https://galaxy.ansible.com/thedumbtechguy/) )\n\n## Credits","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedumbtechguy%2Fansible-role-semaphore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthedumbtechguy%2Fansible-role-semaphore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedumbtechguy%2Fansible-role-semaphore/lists"}