{"id":25929782,"url":"https://github.com/cedricpoon/ansible-proflow","last_synced_at":"2026-05-29T01:32:17.986Z","repository":{"id":278325393,"uuid":"260201754","full_name":"cedricpoon/ansible-proflow","owner":"cedricpoon","description":"Regulate ansible role on provisioning flow for different states","archived":false,"fork":false,"pushed_at":"2021-01-07T07:12:17.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-03T22:19:11.859Z","etag":null,"topics":["ansible","ansible-galaxy","ansible-playbook","framework","provisioning"],"latest_commit_sha":null,"homepage":"https://galaxy.ansible.com/cedricpoon/proflow","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cedricpoon.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-30T12:10:50.000Z","updated_at":"2021-01-07T07:12:19.000Z","dependencies_parsed_at":"2025-02-19T07:36:23.301Z","dependency_job_id":null,"html_url":"https://github.com/cedricpoon/ansible-proflow","commit_stats":null,"previous_names":["cedricpoon/ansible-proflow"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/cedricpoon/ansible-proflow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedricpoon%2Fansible-proflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedricpoon%2Fansible-proflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedricpoon%2Fansible-proflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedricpoon%2Fansible-proflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cedricpoon","download_url":"https://codeload.github.com/cedricpoon/ansible-proflow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedricpoon%2Fansible-proflow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33633468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"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":["ansible","ansible-galaxy","ansible-playbook","framework","provisioning"],"created_at":"2025-03-03T22:19:42.062Z","updated_at":"2026-05-29T01:32:17.916Z","avatar_url":"https://github.com/cedricpoon.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# proflow\n![build-deploy](https://github.com/cedricpoon/ansible-proflow/workflows/build-deploy/badge.svg)\n![lint](https://github.com/cedricpoon/ansible-proflow/workflows/lint/badge.svg)\n\n#### TL;DR\nA *role* and *playbook* **state** enforcer lives as a *templated* **main.yml**\n\nCurrently Ansible does not contain any kind of conventions for role provisioning / deprovisioning, which leads to either fragmented adoption, or simply no support, on the mentioned flow control.\n\nThis collection aims to regulate ansible role on provisioning flow for different states (i.e. provision as present and deprovision as absent).\n\n## Philosophy\nAn `EXTRA_VARS` naming `state` will be used in any custom playbook for signposting the provisioning flow among roles\n\n### `state=present`\nThis will serve as positive flow for role provisioning. It is also a default state for the role which applied proflow.\n\n### `state=absent`\nThis will serve as negative flow for role de-provisioning. Optional.\n\n## Usage\n### Installation\n```sh\nansible-galaxy collection install cedricpoon.proflow\n```\n\n### Applying via `apply.yml`\n```sh\n# Run the following command in your ansible project directory\nansible-playbook ~/.ansible/collections/ansible_collections/cedricpoon/proflow/apply.yml\n```\n#### `EXTRA_VARS` in `apply.yml`\n| Variable  | Description | Default | Remarks |\n|-----------|-------------|---------|---------|\n| `current` | Indicates whenever `main.yml` applies to current working directory or roles underneath | `yes` | - |\n| `targets` | A list for remote role folders for applying `main.yml` | `[]` | Empty list for applying to all role folders. Only used when `current == 'no'` |\n\n#### Example\nFolder structure\n```\nroles/\n    common/               # this hierarchy represents a \"role\"\n        tasks/            #\n            main.yml      #  \u003c-- tasks file can include smaller files if warranted\n...\n```\n##### Using `current`\n```sh\ncd ./roles/common\n\n# current default to be `yes`\nansible-playbook ~/.ansible/collections/ansible_collections/cedricpoon/proflow/apply.yml\n```\n##### Using `targets`\n```sh\nansible-playbook ~/.ansible/collections/ansible_collections/cedricpoon/proflow/apply.yml -e '{\"targets\": [\"common\"], \"current\": \"no\"}'\n```\n\n#### `EXTRA_VARS` in `main.yml`\n| Variable  | Description | Default | Remarks | Values |\n|-----------|-------------|---------|---------| ------- |\n| `state` | Signposting the provisioning flow | `present` | - | [`present`, `absent`]\n| `rollback` | Task YAML for rollback iff task(s) in `main.present.yml` failed | `undefined` | `state=absent` will be passed to included rollback YAML | String path to task yaml |\n| `confirm` | Should skip prompt when `state=absent` | `undefined` | - | Any |\n\n## API\nProflow will provide and maintain a standardized `main.yml` through playbook `apply.yml`. You need to maintain `main.xxx.yml` for subscription to different provision approaches (e.g. present). All `main.xxx.yml` should be lazily loaded by proflow's `main.yml` (i.e. Not loaded not running without exceptions, if file not exists).\n\n| File             | Description                         |\n|------------------|-------------------------------------|\n| `main.present.yml` | Positively provisioning the role    |\n| `main.absent.yml`  | Negatively de-provisioning the role |\n\n### Magic Variables\nProflow also provides a list of magic variables for reflecting internal changes among current execution.\n\n| Variable  | Description |\n|-----------|-------------|\n| `__state__` | Current inflow state |\n| `__failed__` | `ansible_failed_task` inside proflow |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedricpoon%2Fansible-proflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcedricpoon%2Fansible-proflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedricpoon%2Fansible-proflow/lists"}