{"id":20564455,"url":"https://github.com/tarantool/ansible-cartridge","last_synced_at":"2025-05-09T17:33:13.344Z","repository":{"id":38451687,"uuid":"205144523","full_name":"tarantool/ansible-cartridge","owner":"tarantool","description":"Ansible role for deploying tarantool cartridge-based applications","archived":true,"fork":false,"pushed_at":"2023-11-20T15:04:33.000Z","size":28902,"stargazers_count":23,"open_issues_count":2,"forks_count":15,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-21T18:15:20.477Z","etag":null,"topics":["ansible","cartridge","tarantool"],"latest_commit_sha":null,"homepage":"https://galaxy.ansible.com/tarantool/cartridge","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tarantool.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-08-29T11:06:24.000Z","updated_at":"2024-01-29T10:26:40.000Z","dependencies_parsed_at":"2023-11-20T16:28:19.752Z","dependency_job_id":null,"html_url":"https://github.com/tarantool/ansible-cartridge","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fansible-cartridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fansible-cartridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fansible-cartridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fansible-cartridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tarantool","download_url":"https://codeload.github.com/tarantool/ansible-cartridge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253295834,"owners_count":21885707,"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","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":["ansible","cartridge","tarantool"],"created_at":"2024-11-16T04:26:48.386Z","updated_at":"2025-05-09T17:33:12.763Z","avatar_url":"https://github.com/tarantool.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e **DEPRECATION NOTICE:** This role will be deprecated by January 1, 2024. All open issues and pull requests will be closed shortly. ansible-cartridge will remain in public archive as Tarantool moves on with version 3.0. Please follow official community channels in Telegram — @tarantool (en), @tarantoolru (ru). Feel free to ask ansible related questions there.\n\n# Ansible Role: Tarantool Cartridge\n\n[![Ansible Galaxy](https://img.shields.io/badge/tarantool.cartridge-blue?label=Ansible%20Galaxy\u0026labelColor=2d3532)](https://galaxy.ansible.com/tarantool/cartridge)\n[![Releases](https://img.shields.io/github/v/release/tarantool/ansible-cartridge?include_prereleases\u0026label=Release\u0026labelColor=2d3532)](https://github.com/tarantool/ansible-cartridge/releases)\n\n[![Unit Tests](https://img.shields.io/github/workflow/status/tarantool/ansible-cartridge/Unit%20tests?label=Unit%20Tests\u0026labelColor=2d3532)](https://github.com/tarantool/ansible-cartridge/actions/workflows/unit-tests.yml)\n[![Molecule Tests](https://img.shields.io/github/workflow/status/tarantool/ansible-cartridge/Molecule%20tests?label=Molecule%20Tests\u0026labelColor=2d3532)](https://github.com/tarantool/ansible-cartridge/actions/workflows/molecule-tests.yml)\n[![Consistency Tests](https://img.shields.io/github/workflow/status/tarantool/ansible-cartridge/Consistency%20tests?label=Consistency%20Tests\u0026labelColor=2d3532)](https://github.com/tarantool/ansible-cartridge/actions/workflows/consistency-tests.yml)\n\nAn Ansible role to easily deploy\n[Tarantool Cartridge](https://github.com/tarantool/cartridge) applications.\n\nThis role can deploy and configure applications packed in `RPM`, `DEB` and `TGZ` using\n[`Cartridge CLI`](https://github.com/tarantool/cartridge-cli).\n\nOnly `RedHat` and `Debian` OS families are supported.\n\n## Table of contents\n\n* [Requirements](#requirements)\n* [Installation](#installation)\n* [Quick start](#quick-start)\n* [Using scenario](#using-scenario)\n* [Documentation](#documentation)\n* [Cookbook](#cookbook)\n\n## Requirements\n\n* Tarantool Cartridge \u003e= 2.0.0, \u003c 3;\n* Ansible 2.8.4 or higher.\n\nNote that running the role may require\n[root access](https://docs.ansible.com/ansible/2.4/become.html).\n\n## Installation\n\nFirst, you need to install this role using `ansible-galaxy`:\n\n```bash\n$ ansible-galaxy install tarantool.cartridge,1.12.0\n```\n\n## Quick start\n\nCheck out the [Getting Started guide](/cookbook/getting-started)\nto learn how to use this role.\n\nYou can start two virtual machines using example\n[Vagrantfile](/doc/files/Vagrantfile).\n\nLet's deploy an application with simple topology.\n\nFirst, pack your application to RPM using `cartridge pack rpm` command.\n\nThen, describe the topology in `hosts.yml` file:\n\n`hosts.yml`:\n\n```yaml\n---\nall:\n  vars:\n    cartridge_app_name: myapp\n    cartridge_package_path: ./myapp-1.0.0-0.rpm\n    cartridge_cluster_cookie: secret-cookie\n\n    # may be useful for vagrant\n    ansible_ssh_private_key_file: ~/.vagrant.d/insecure_private_key\n    ansible_ssh_common_args: '-o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'\n\n  hosts:\n    storage-1:\n      config:\n        advertise_uri: '172.19.0.2:3301'\n        http_port: 8181\n\n    storage-1-replica:\n      config:\n        advertise_uri: '172.19.0.2:3302'\n        http_port: 8182\n\n  children:\n    # group instances by machines\n    machine_1:\n      vars:\n        # first machine address and connection opts\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n\n      hosts:  # instances to be started on this machine\n        storage-1:\n        storage-1-replica:\n\n    # group instances by replicasets\n    storage_1_replicaset:  # replicaset storage-1\n      hosts:  # instances\n        storage-1:\n        storage-1-replica:\n      vars:\n        # replicaset configuration\n        replicaset_alias: storage-1\n        roles:\n          - 'vshard-storage'\n        failover_priority:\n          - storage-1\n          - storage-1-replica\n```\n\nWrite a simple playbook that imports role:\n\n```yaml\n# playbook.yml\n---\n- name: Deploy my Tarantool Cartridge app\n  hosts: all\n  become: true\n  become_user: root\n  any_errors_fatal: true\n  gather_facts: false\n  roles:\n    - tarantool.cartridge\n```\n\nThen run the playbook with created inventory:\n\n```bash\nansible-playbook -i hosts.yml playbook.yml\n```\n\nNow, visit http://localhost:8181\n\n![image](/doc/images/quck-start.png)\n\n## Using scenario\n\nIt's possible to perform different actions with instances or replicasets\nby combining [`cartridge_scenario`](/doc/scenario.md) variable and Ansible limits.\n\nFor example, you can configure and start some instances.\nTo do this, you should define `cartridge_scenario` variable like this:\n\n```yaml\ncartridge_scenario:\n  - configure_instances\n  - start_instance\n  - wait_instance_started\n```\n\nThen run playbook with `--limit` option:\n\n```bash\nansible-playbook -i hosts.yml playbook.yml --limit instance_1,instance_2\n```\n\nYou can also simply edit some replicaset.\nTo do this, define `cartridge_scenario` variable like this:\n\n```yaml\ncartridge_scenario:\n  - edit_topology\n```\n\nAfter run playbook with `--limit` option:\n\n```bash\nansible-playbook -i hosts.yml playbook.yml --limit replicaset_1_group,replicaset_2_group\n```\n\nMoreover, scenario allows you to describe custom steps for configuring cluster.\nFor more details about using scenario and available steps, see\n[scenario documentation](doc/scenario.md).\n\n## Documentation\n\n* [Configuration basics](/doc/configuration-basics.md)\n* [Role variables](/doc/variables.md)\n* [Role scenario](/doc/scenario.md)\n* [Role steps description](/doc/steps.md)\n* [Application package](/doc/package.md)\n* [Deploying TGZ package](/doc/tgz.md)\n* [Using multiversion approach](/doc/multiversion.md)\n* [Configuring instances](/doc/instances.md)\n* [Configuring topology](/doc/topology.md)\n* [VShard bootstrapping](/doc/vshard_bootstrapping.md)\n* [Configuring auth](/doc/auth.md)\n* [Configuring failover](/doc/failover.md)\n* [Configuring stateboard](/doc/stateboard.md)\n* [Application config](/doc/app_config.md)\n* [Rolling update](/doc/rolling_update.md)\n* [Eval Lua code on instances](/doc/eval.md)\n* [Backups](/doc/backups.md)\n\n## Cookbook\n\nLearn [the cookbook](/cookbook/README.md) to know now to use the\n`tarantool.cartridge` role for different purposes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarantool%2Fansible-cartridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftarantool%2Fansible-cartridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarantool%2Fansible-cartridge/lists"}