{"id":28600937,"url":"https://github.com/oldthreefeng/ango","last_synced_at":"2026-05-20T14:12:28.029Z","repository":{"id":57504239,"uuid":"227600433","full_name":"oldthreefeng/ango","owner":"oldthreefeng","description":"ango is cli tools to running Ansible playbooks from Golang. support url , stdin to .yml ","archived":false,"fork":false,"pushed_at":"2020-08-10T09:27:04.000Z","size":109,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-06-20T13:39:48.750Z","etag":null,"topics":["ango","ansible","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","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/oldthreefeng.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}},"created_at":"2019-12-12T12:21:12.000Z","updated_at":"2022-08-24T14:53:28.000Z","dependencies_parsed_at":"2022-08-29T20:21:30.539Z","dependency_job_id":null,"html_url":"https://github.com/oldthreefeng/ango","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldthreefeng%2Fango","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldthreefeng%2Fango/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldthreefeng%2Fango/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldthreefeng%2Fango/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oldthreefeng","download_url":"https://codeload.github.com/oldthreefeng/ango/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldthreefeng%2Fango/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259280932,"owners_count":22833476,"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":["ango","ansible","golang"],"created_at":"2025-06-11T14:39:26.545Z","updated_at":"2026-05-20T14:12:22.980Z","avatar_url":"https://github.com/oldthreefeng.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## ango\n\n基于golang开发的一个用于部署项目至生产环境的部署工具\n\n目前仅使用playbook部署/回滚相关业务并使用钉钉的`webhook`通知, 文档查看: https://github.com/oldthreefeng/ango\n\n## Required\n\n- `go version go1.13.4 linux/amd64`\n- `export GO111MODULE=\"on\"`\n- `ansible2.6+`\n- `.yml is ready to go`\n\n## Usage\n\n### download and compile\n\nuse git to download source code\n\n```bash\n$ git clone https://github.com/oldthreefeng/ango.git\n$ cd ango \u0026\u0026 go mod download\n\n# Linux\n$ make linux\n# darwin\n$ make darwin\n\n$ ./ango\nango is cli tools to running Ansible playbooks from Golang.\nrun \"ango -h\" get more help, more see https://github.com/oldthreefeng/ango\nango version :       1.0.0\nGit Commit Hash:     a9a3c28\nUTC Build Time :     2019-12-13 04:16:36 UTC\nGo Version:          go version go1.13.4 linux/amd64\nAuthor :             louis.hong\n```\n\nuse go get \n\n```bash\n$ go get -u github.com/oldthreefeng/ango\n```\n\n### run with palybook\n\nfirst, to config your ansible, more to see [ansible](https://github.com/ansible/ansible)\n\n```bash\n$ vim /etc/ansible/hosts\n[test]\n192.168.0.62\n192.168.0.63\n$ ansible test -m ping\n192.168.0.62 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\n192.168.0.63 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\n```\n\nsecond, to export some env to hook to Dingding\n\n```bash\n$ export DingDingMobiles=\"158****6468\"\n$ export DingDingUrl=\"https://oapi.dingtalk.com/robot/send?access_token=*****\"\n```\n\nthird, to deploy your project\n\n```bash\n$ ango deploy -f test.yml -v v1.23  \n## It's equal to  `ansible-playbook test.yml -e version=v1.23 -f 1`\n## and to Post a test Message to Dingding\n\n$ ango deploy -h \nuse ango to deploy project with webhook to dingding\n\nUsage:\n  ango deploy [flags]\n\nExamples:\n  ango deploy -f api.yml -t v1.2.0\n\nFlags:\n  -m, --comments string   add comments when send message to dingding\n  -h, --help              help for deploy\n\nGlobal Flags:\n      --author string     author name for copyright attribution (default \"louis.hong\")\n  -f, --filename string   ansible-playbook for yml config(requried)\n  -t, --tags string       tags for the project version(requried)\n  -v, --verbose           verbose mode to see more detail infomation\n```\nfourth, to rollback your project \n\n```\n$ ango rollback -f test.yml -t v1.2 --real\n\n## \nrollback 回退版本, 需要指定回退版本的yml文件及要回退的version\n\nUsage:\n  ango rollback [flags]\n\nExamples:\n  ango rollback -f roll_api.yml -t v1.2  -r \n\nFlags:\n  -h, --help   help for rollback\n  -r, --real   really to rollback this version\n\nGlobal Flags:\n      --author string     author name for copyright attribution (default \"louis.hong\")\n  -f, --filename string   ansible-playbook for yml config(requried)\n  -t, --tags string       tags for the project version(requried)\n  -v, --verbose           verbose mode to see more detail infomation\n```\n\n### logs\n\n```bash \n# 查看发布日志\n# -r is requried when rollback\n$ ango rollback  -f test.yml -t v1.2.0  -r\n$ ango deploy -f test.yml -t v1.4.0\n$ tail -f fabu.log\n[INFO] 2019-12-12 18:36:29 test-v1.2 回滚成功\n[INFO] 2019-12-12 18:37:00 test-v1.4 部署成功\n```\n\nthat's all\n\n## support read stdin \n\nread stdin and save file to AngoBaseDir/tmp.yml then run the ansible shell\n\n```shell\n$ cat api.yml | ango deploy -f - -t v1.2.0\n```\n\nAngo Version 1.2.0\n\n## support Url file \n\nread file name from url path then save file to AngoBaseDir/filename. then run ansible shell\n\n**filename must has suffix .yml or .yaml**\n\n```shell\n$ ango deploy -f  http://www.fenghong.tech/ansible/test/test.yml -t v1.2.0\n```\n\n## Use in docker \n\n```shell\n$ docker pull louisehong/ango\n## use local file to acess \n\n$ cat test.yml\n- hosts: test \n  remote_user: root\n  tasks:\n    - name: ping test\n      shell: \"echo {{version}}\"\n      register: echo\n    - name: echo\n      debug: var=echo.stdout\n      with_items: echo.results\n\n$ cat hosts\n\n$ docker run --rm -v ~/.ssh:/root/.ssh -v /etc/ansible/hosts:/etc/ansible/hosts louisehong/ango \\\n  deploy -f  http://www.fenghong.tech/ansible/test/test.yml -t v1.2.0\n[os]exec cmd is : /bin/sh [-c mkdir -p /tmp \u0026\u0026 cd /tmp \u0026\u0026  wget -c  http://www.fenghong.tech/ansible/test/test.yml ]\nConnecting to www.fenghong.tech (183.131.200.61:80)\nConnecting to www.fenghong.tech (183.131.200.69:443)\ntest.yml             100% |*******************************|   196   0:00:00 ETA\n\n[os]exec cmd is : /bin/sh [-c /usr/bin/ansible-playbook  /tmp/test.yml -e version=v1.2.0 -f 1]\n\nPLAY [test] ********************************************************************\n\nTASK [Gathering Facts] *********************************************************\nok: [192.168.0.23]\n\nTASK [ping test] ***************************************************************\nchanged: [192.168.0.23]\n\nTASK [echo] ********************************************************************\nok: [192.168.0.23] =\u003e (item=echo.results) =\u003e {\n    \"echo.stdout\": \"v1.2.0\", \n    \"item\": \"echo.results\"\n}\n\nPLAY RECAP *********************************************************************\n192.168.0.23               : ok=3    changed=1    unreachable=0    failed=0 \n```\n\n[thanks to jetbrains](https://www.jetbrains.com/?from=ginuse)\n\n![](https://www.jetbrains.com/company/brand/img/jetbrains_logo.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foldthreefeng%2Fango","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foldthreefeng%2Fango","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foldthreefeng%2Fango/lists"}