{"id":24362671,"url":"https://github.com/machu-gwu/cloud-engineer-development-best-practice","last_synced_at":"2026-04-13T02:02:04.519Z","repository":{"id":42651042,"uuid":"235845713","full_name":"MacHu-GWU/Cloud-Engineer-Development-Best-Practice","owner":"MacHu-GWU","description":"Development on Linux Server like a pro, easy learning curve","archived":false,"fork":false,"pushed_at":"2023-12-19T20:56:40.000Z","size":7,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-18T22:53:00.493Z","etag":null,"topics":["devops","linux","productivity","python","shell","shell-scripting","ssh"],"latest_commit_sha":null,"homepage":null,"language":null,"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/MacHu-GWU.png","metadata":{"files":{"readme":"README.rst","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}},"created_at":"2020-01-23T17:15:40.000Z","updated_at":"2020-01-24T20:29:08.000Z","dependencies_parsed_at":"2022-09-14T16:00:38.251Z","dependency_job_id":null,"html_url":"https://github.com/MacHu-GWU/Cloud-Engineer-Development-Best-Practice","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MacHu-GWU%2FCloud-Engineer-Development-Best-Practice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MacHu-GWU%2FCloud-Engineer-Development-Best-Practice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MacHu-GWU%2FCloud-Engineer-Development-Best-Practice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MacHu-GWU%2FCloud-Engineer-Development-Best-Practice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MacHu-GWU","download_url":"https://codeload.github.com/MacHu-GWU/Cloud-Engineer-Development-Best-Practice/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243188493,"owners_count":20250515,"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":["devops","linux","productivity","python","shell","shell-scripting","ssh"],"created_at":"2025-01-18T22:53:10.974Z","updated_at":"2026-04-13T02:02:04.417Z","avatar_url":"https://github.com/MacHu-GWU.png","language":null,"readme":"Cloud Engineer Development Best Practice\n==============================================================================\n\n**If you are doing development on a Remote Linux Server over 50% of your time, this tutorial is for you**.\n\nThis tutorial introduced a easy way to perform complex operation on Remote Server, easy learning curve, no need to be a expert of vim or those hacky linux tools like grep, awk, sed. It aims to train very entry level cloud engineer to be able to contribute robust, stable, reusable codes.\n\n\n``Typing Command`` vs ``Writing Codes`` Development Pattern\n------------------------------------------------------------------------------\n\nwhat is ``Typing Command`` pattern:\n\n.. code-block:: bash\n\n    $ sudo yum -y install this\n    $ sudo yum -y install that\n    $ vim this\n    $ ...\n\nwhat is ``Writing Codes`` pattern:\n\n.. code-block:: bash\n\n    #!/bin/bash\n    # content of my-script.sh\n    yum -y install this\n    yum -y install that\n    python update_config.py $HOME/oracle-config.cfg ORACLE_HOME \"/usr/lib/oracle\"\n    ...\n\nthen:\n\n.. code-block:: bash\n\n    bash my-script.sh\n\n**Disadvantage of Typing Command**:\n\n1. hard to type long command. one typo, you have to start over.\n2. hard to repeat it again or on different machine.\n3. unable to share knowledge with others.\n4. no version control ...\n5. what if you want to perform more complex works ...\n\nAdvantage of Typing Command:\n\n1. interactive\n2. fast for test\n\nConclusion:\n\n1. do ``Typing Command`` when you are doing POC.\n2. do ``Writing Codes`` for your development.\n\n\nProblems with ``Writing Codes`` Pattern\n------------------------------------------------------------------------------\n\n1. Remote server doesn't have GUI or IDE for writing codes.\n2. master VIM is hard.\n3. Even if you are a VIM artist, configure VIM on every server you are working on is hard.\n4. **Development on local, execute on remote is incontinent**.\n\n\nDoing Development for Remote Server the Right Way\n------------------------------------------------------------------------------\n\n1. Setup development environment once on your local machine only once.\n2. Scripting made easy, writing codes on your local, execute it on remote.\n3. Forget about grep awk sed, leverage advance feature of Python, doing any manipulation you want.\n4. More goodies.\n\n\nReference\n------------------------------------------------------------------------------\n\n- http://docs.fabfile.org/en/2.5/getting-started.html\n- http://docs.pyinvoke.org/en/stable/getting-started.html\n- https://fabric-patchwork.readthedocs.io/en/latest/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachu-gwu%2Fcloud-engineer-development-best-practice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmachu-gwu%2Fcloud-engineer-development-best-practice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachu-gwu%2Fcloud-engineer-development-best-practice/lists"}