{"id":26436472,"url":"https://github.com/ranjithdb/ansible-04","last_synced_at":"2026-05-07T14:46:28.234Z","repository":{"id":281202846,"uuid":"944539959","full_name":"ranjithdb/ansible-04","owner":"ranjithdb","description":"Ansible Playbooks for Installing Docker and Deploying Nginx container","archived":false,"fork":false,"pushed_at":"2025-03-08T16:10:17.000Z","size":148,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T08:17:18.623Z","etag":null,"topics":["ansible","ansible-playbook","docker","nginx"],"latest_commit_sha":null,"homepage":"","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/ranjithdb.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":"2025-03-07T14:25:55.000Z","updated_at":"2025-03-08T16:10:21.000Z","dependencies_parsed_at":"2025-03-07T15:41:53.171Z","dependency_job_id":null,"html_url":"https://github.com/ranjithdb/ansible-04","commit_stats":null,"previous_names":["ranjithdb/ansible-04"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ranjithdb/ansible-04","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithdb%2Fansible-04","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithdb%2Fansible-04/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithdb%2Fansible-04/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithdb%2Fansible-04/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ranjithdb","download_url":"https://codeload.github.com/ranjithdb/ansible-04/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjithdb%2Fansible-04/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272900171,"owners_count":25012037,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"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-playbook","docker","nginx"],"created_at":"2025-03-18T08:17:24.138Z","updated_at":"2026-05-07T14:46:28.191Z","avatar_url":"https://github.com/ranjithdb.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ansible-04\n\n## Ansible Playbooks for Installing Docker and Deploying Nginx container\n\nThis repository contains Ansible playbooks for setting up Docker on Ubuntu and deploying an Nginx container.\n\n## Prerequisites\n\n- Ansible installed on the control node\n- Target Ubuntu hosts accessible via SSH\n- `sudo` privileges on target machines\n\n## Inventory File (`inventory.ini`)\n\nDefine the target hosts in an inventory file:\n\n```ini\n[ubuntu]\nubuntu-server1 ansible_host=\u003cyour-server-ip\u003e ansible_user=\u003cyour-ssh-user\u003e\n\nubuntu-server2 ansible_host=\u003cyour-server-ip\u003e ansible_user=\u003cyour-ssh-user\u003e\n```\n\n## Install Docker on Ubuntu\n\nThis playbook installs Docker on Ubuntu machines.\n\n### Playbook\n\n `install_docker_ubuntu.yml`\n\n```yaml\n- name: Install Docker on Ubuntu\n  hosts: ubuntu\n  become: true\n  tasks:\n    - name: Install dependencies\n      apt:\n        name:\n          - ca-certificates\n          - curl\n          - gnupg\n        state: present\n        update_cache: true\n\n    - name: Add Docker GPG key\n      shell: |\n        install -m 0755 -d /etc/apt/keyrings\n        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | tee /etc/apt/keyrings/docker.asc \u003e /dev/null\n        chmod a+r /etc/apt/keyrings/docker.asc\n\n    - name: Add Docker repository\n      shell: |\n        echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n\n    - name: Install Docker packages\n      apt:\n        name:\n          - docker-ce\n          - docker-ce-cli\n          - containerd.io\n        state: present\n        update_cache: true\n\n    - name: Start and enable Docker service\n      systemd:\n        name: docker\n        state: started\n        enabled: true\n```\n\n### Explanation of `install_docker_ubuntu.yml`\n\nThis Ansible playbook automates the installation of Docker on Ubuntu machines. Here’s a breakdown of what each task does:\n\n1. **Define the playbook**\n\n   ```yaml\n   - name: Install Docker on Ubuntu\n     hosts: ubuntu\n     become: true\n   ```\n\n   - This playbook targets hosts in the `ubuntu` group.\n   - `become: true` ensures the tasks run with elevated privileges (`sudo`).\n\n2. **Install dependencies**\n\n   ```yaml\n   - name: Install dependencies\n     apt:\n       name:\n         - ca-certificates\n         - curl\n         - gnupg\n       state: present\n       update_cache: true\n   ```\n\n   - Installs required packages:\n     - `ca-certificates`: Ensures secure HTTPS communication.\n     - `curl`: Used to download files from the internet.\n     - `gnupg`: Required for managing GPG keys.\n   - `update_cache: true` ensures the package index is updated before installation.\n\n3. **Add the Docker GPG key**\n\n   ```yaml\n   - name: Add Docker GPG key\n     shell: |\n       install -m 0755 -d /etc/apt/keyrings\n       curl -fsSL https://download.docker.com/linux/ubuntu/gpg | tee /etc/apt/keyrings/docker.asc \u003e /dev/null\n       chmod a+r /etc/apt/keyrings/docker.asc\n   ```\n\n   - Creates `/etc/apt/keyrings` directory (if it doesn’t exist).\n   - Downloads Docker’s official GPG key and stores it in `/etc/apt/keyrings/docker.asc`.\n   - Ensures the key file is readable.\n\n4. **Add the Docker repository**\n\n   ```yaml\n   - name: Add Docker repository\n     shell: |\n       echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n   ```\n\n   - Adds the official Docker repository for the detected Ubuntu version (`$(lsb_release -cs)` dynamically fetches the codename).\n\n5. **Install Docker packages**\n\n   ```yaml\n   - name: Install Docker packages\n     apt:\n       name:\n         - docker-ce\n         - docker-ce-cli\n         - containerd.io\n       state: present\n       update_cache: true\n   ```\n\n   - Installs Docker components:\n     - `docker-ce`: The Docker engine.\n     - `docker-ce-cli`: The Docker command-line tool.\n     - `containerd.io`: The container runtime.\n   - `update_cache: true` ensures the package index is refreshed before installation.\n\n6. **Start and enable Docker service**\n\n   ```yaml\n   - name: Start and enable Docker service\n     systemd:\n       name: docker\n       state: started\n       enabled: true\n   ```\n\n   - Starts the Docker service.\n   - Ensures Docker starts automatically on system boot.\n\n### Run the Playbook\n\n```bash\nansible-playbook -i inventory.ini install_docker_ubuntu.yml --ask-become-pass\n```\n\n![install docker](ss/01.png \"install docker\")\n\n## Deploy Nginx using Docker\n\nThis playbook deploys an Nginx container using Docker.\n\n### Playbook: `deploy_nginx.yml`\n\n```yaml\n- name: Deploy Nginx with Docker\n  hosts: ubuntu\n  become: true\n  tasks:\n    - name: Pull Nginx image\n      docker_image:\n        name: nginx\n        source: pull\n\n    - name: Run Nginx container\n      docker_container:\n        name: nginx\n        image: nginx\n        state: started\n        restart_policy: always\n        ports:\n          - \"80:80\"\n```\n\n### Run the Container Deployment Playbook\n\n```bash\nansible-playbook -i inventory.ini deploy_nginx.yml --ask-become-pass\n```\n\n![deploy nginx](ss/02.png \"deploy nginx\")\n\n## Verify Deployment\n\nAfter running the playbooks, verify the setup:\n\n### Check Docker Installation\n\n```bash\ndocker --version\n```\n\n### Check Running Containers\n\n```bash\ndocker ps\n```\n\n### Test Nginx Deployment\n\nOpen a browser and visit `http://\u003cyour-server-ip\u003e` to see the Nginx welcome page.\n\n![vmone](ss/03.png \"vmone\")\n\n![vmtwo](ss/04.png \"vmtwo\")\n\n## Cleanup\n\nTo remove the Nginx container:\n\n```bash\ndocker rm -f nginx\n```\n\nTo uninstall Docker:\n\n```bash\nsudo apt remove -y docker-ce docker-ce-cli containerd.io\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franjithdb%2Fansible-04","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franjithdb%2Fansible-04","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franjithdb%2Fansible-04/lists"}