{"id":20136097,"url":"https://github.com/zkfmapf123/configure-management","last_synced_at":"2026-03-07T01:03:38.428Z","repository":{"id":179778349,"uuid":"663973701","full_name":"zkfmapf123/configure-management","owner":"zkfmapf123","description":"configure-management use ansible","archived":false,"fork":false,"pushed_at":"2023-07-09T10:09:51.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-02T22:42:09.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/zkfmapf123.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}},"created_at":"2023-07-08T15:22:02.000Z","updated_at":"2023-07-09T10:09:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"a81c2878-6277-4b6a-a8d9-9aabdd47a217","html_url":"https://github.com/zkfmapf123/configure-management","commit_stats":null,"previous_names":["zkfmapf123/configure-management"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zkfmapf123/configure-management","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkfmapf123%2Fconfigure-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkfmapf123%2Fconfigure-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkfmapf123%2Fconfigure-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkfmapf123%2Fconfigure-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zkfmapf123","download_url":"https://codeload.github.com/zkfmapf123/configure-management/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkfmapf123%2Fconfigure-management/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30204452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2024-11-13T21:17:41.721Z","updated_at":"2026-03-07T01:03:38.368Z","avatar_url":"https://github.com/zkfmapf123.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Configure-Management use Ansible\n\n## 특징\n\n- python 기반\n- agentless (각 서버에 agent 설치가필요없다)\n  - ssh\n  - win_rm\n\n## UseCase\n\n- Configuration Management (형상관리) \\*\\*\\*\n- Security Compliance (보안) \\*\\*\\*\n  - Security Test\n- Application Deployment (Application 배포)\n- Provisioning (자원의 provisioning)\n- Continuouse Delivery\n\n## why Ansible?\n\n- 기존의 Shell로 형상관리를 진행할때\n\n  ```bash\n  which=`which mongod 2\u003e\u00261 \u003e/dev/null`\n      if [\u0026? -eq 0]; then\n          if [\"%INSTALLED_MONGO\" == \"$MONGO_VERSION\" ]; then\n          echo \"Mongo Server version is current and up to date\"\n      fi\n      if [\"$INSALLED_MONGO\" != \"$MONGO_VERSION\"]; then\n        ...\n      fi\n  ```\n\n- Ansible로 멱등성을 유지하면서 개발할때\n  ```hcl\n    - name: install mongodb\n      yum: name=mongodb-server-2.6 state=installed\n  ```\n\n## Ansible\n\n\u003e Inventory\n\n- 형상관리를 하기위한 host(서버)들의 파일 -\u003e 서버들의 목록\n- 그룹기능을 지원 (Ubuntu Group, Amazon Linux Group, Dev Group, Prod Group)\n- Static Inventory \\*\\*\\*\n- Dynamic Inventory -\u003e Instance IP가 빈번하게 바뀔경우에 사용\n\n```inv\n    ## Group\n    [ubuntu]\n    ubuntu1 ansible_host=52.79.243.88 ansible_user=ubuntu\n    ubuntu2 ansible_host=54.180.100.70 ansible_user=ubuntu\n\n    ## Sub Group\n    [ubuntu:dev]\n\n    [ubuntu:dev]\n    dev:ubuntu ansible_host=52.79.243.88 ansible_user=ubuntu\n\n    [ubuntu:prod]\n    prod:ubuntu ansible_host=54.180.100.70 ansible_user=ubuntu\n```\n\n\u003e playbook\n\n- yaml 파일로 정의 (하나의 Playbook -\u003e Play의 집합)\n- play 즉 작업목록, 특정 호스트의 대해 작업을 수행\n\n```\n    // 1개의 Playbook\n    // play가 2개\n    // 각 play안에 Task들이 존재\n    // 앤서블이 실행하는 코드 단위 -\u003e module\n    //  - 첫번째 play에...\n    //  - 첫번째 task는 command 모듈을 사용\n    //  - 두번째 task는 script 모듈을 사용\n    //  - 세번째 task는 apt 모듈을 사용\n\n- name: Play 1\n  hosts: ubuntu\n  tasks:\n  - name: \"Task 1: Execute command\"\n    command: uptime\n\n  - name: \"Task 2: Execute script\"\n    script: task2.sh\n\n  - name: \"Task 3: Install package\"\n    apt:\n      name: nginx\n      state: present\n      update_cache: true\n\n  - name: \"Task 4: Start nginx service\"\n    service:\n      name: nginx\n      state: started\n\n- name: Play 2\n  hosts: localhost\n  tasks:\n  - name: \"Task 1: Execute command\"\n    command: whoami\n\n  - name: \"Task 2: Execute script\"\n    script: task2.sh\n```\n\n\u003e handler\n\n- 특정 Task A가 실행되면 Task B가 실행되게끔 진행 (이벤트 기반...)\n- nginx 같은 webserver에서 서버의 변경이 일어날때...\n\n\u003e variable\n\n- python의 지시어(예약어)를 사용할수는 없음\n- playbook의 지시어(얘약어)를 사용할 수 없음\n- vars.yaml 참조\n\n```yaml\n## use jinja2 syntax\nansible.builtin.template:\n  src: foo.cfg.j2\n  dest: '{{ remote_install_path }}/foo/cfg'\n```\n\n\u003e Facts\n\n- Ansible은 각 단계의 Task를 Facts로 수집한다.\n- 다만 Facts자체를 수집하기때문에 성능이 저하될 수 있다.\n- 실험적인 단계나, 성능향상을 위해서 Fact를 false로 지정할 수 있다.\n  ```\n    - name: 'user info'\n      hosts: dev\n      become: true\n      gather_facts: false\n      vars_files:\n  ```\n- ansible 자체는 python모듈이 설치가 돼야하는데 -\u003e Container 환경에서는 python모듈이 존재하지 않기때문에 prepare module만 사용해야 한다. (실험적인 환경)\n  ```\n    command, shell, raw\n  ```\n\n## Reference\n\n- \u003ca href=\"https://docs.ansible.com/ansible/latest/index.html\"\u003e Ansible Document \u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkfmapf123%2Fconfigure-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzkfmapf123%2Fconfigure-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkfmapf123%2Fconfigure-management/lists"}