No menu items!
No menu items!
More

    [Ansible] Cài đặt Docker bằng Ansible

    1. Cài đặt Docker.

    Để tạo một role cài đặt Docker bằng Ansible, bạn có thể thực hiện các bước sau:

    Bước 1: Tạo role

    ansible-galaxy init install-docker

    Bước 2: Thêm các task để cài đặt Docker

    Mở file install-docker/tasks/main.yml và thêm các task để cài đặt Docker như sau:

    ---
    - name: Install packages to allow apt to use a repository over HTTPS
      apt:
        name:
          - apt-transport-https
          - ca-certificates
          - curl
          - gnupg
          - lsb-release
        state: latest
    
    - name: Add Docker GPG key
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
    
    - name: Add Docker repository
      apt_repository:
        repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable
        state: present
    
    - name: Install Docker
      apt:
        name: docker-ce
        state: latest
    
    - name: Start and enable Docker service
      systemd:
        name: docker
        state: started
        enabled: yes

    Các task trên sẽ thực hiện các bước sau:

    • Cài đặt các gói cần thiết để sử dụng kho lưu trữ qua HTTPS.
    • Thêm khóa GPG cho kho lưu trữ Docker.
    • Thêm kho lưu trữ Docker vào hệ thống.
    • Cài đặt Docker CE.
    • Khởi động và kích hoạt dịch vụ Docker.

    Bước 3: Kiểm tra role

    Để kiểm tra role, bạn có thể sử dụng playbook sau:

    - name: Install Docker
      hosts: all
      become: true
      roles:
        - install-docker

    Lưu ý rằng để chạy playbook, bạn cần phải có quyền sudo hoặc quyền root trên các máy chủ được liệt kê trong inventory của bạn. Bạn có thể chạy playbook bằng lệnh ansible-playbook playbook.yml.

    Bước 4: Kiểm tra

    Sau khi chạy playbook, bạn có thể kiểm tra xem Docker đã được cài đặt hoặc xóa thành công hay chưa bằng cách sử dụng các lệnh sau:

    • Kiểm tra phiên bản Docker:
    docker --version

    Kiểm tra trạng thái dịch vụ Docker:

    systemctl status docker

    Nếu Docker đã được cài đặt, lệnh docker --version sẽ hiển thị phiên bản của Docker, và lệnh systemctl status docker sẽ hiển thị trạng thái dịch vụ Docker. Nếu Docker đã được xóa, cả hai lệnh trên sẽ không hoạt động và trả về thông báo lỗi.

    2. Bổ sung chức năng xoá Docker.

    Để bổ sung chức năng xóa Docker trong role của bạn, bạn có thể thực hiện các bước sau:

    Bước 1: Thêm các task để xóa Docker

    Mở file install-docker/tasks/main.yml và thêm các task sau đây để xóa Docker:

    ---
    - name: Install packages to allow apt to use a repository over HTTPS
      apt:
        name:
          - apt-transport-https
          - ca-certificates
          - curl
          - gnupg
          - lsb-release
        state: latest
    
    - name: Add Docker GPG key
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
    
    - name: Add Docker repository
      apt_repository:
        repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable
        state: present
    
    - name: Install Docker
      apt:
        name: docker-ce
        state: latest
    
    - name: Start and enable Docker service
      systemd:
        name: docker
        state: started
        enabled: yes
    
    - name: Remove Docker
      apt:
        name: docker-ce
        state: absent
    
    - name: Remove Docker dependencies
      apt:
        name:
          - docker-ce-cli
          - containerd.io
        state: absent
    
    - name: Stop and disable Docker service
      systemd:
        name: docker
        state: stopped
        enabled: no

    Các task trên sẽ thực hiện các bước sau:

    • Cài đặt các gói cần thiết để sử dụng kho lưu trữ qua HTTPS.
    • Thêm khóa GPG cho kho lưu trữ Docker.
    • Thêm kho lưu trữ Docker vào hệ thống.
    • Cài đặt Docker CE.
    • Khởi động và kích hoạt dịch vụ Docker.
    • Xóa Docker CE.
    • Xóa các phụ thuộc của Docker CE.
    • Dừng và vô hiệu hóa dịch vụ Docker.

    Bước 2: Kiểm tra role

    Bạn có thể kiểm tra role bằng cách sử dụng playbook sau:

    - name: Install or Remove Docker
      hosts: all
      become: true
      vars:
        docker_state: present # Set this to "absent" to remove Docker
      roles:
        - { role: install-docker, when: docker_state == 'present' }
        - { role: install-docker, when: docker_state == 'absent' }

    Trong file playbook trên, có hai role được định nghĩa và được chạy tùy thuộc vào giá trị của biến docker_state. Nếu docker_state được đặt là present, role install-docker sẽ được chạy để cài đặt Docker trên các máy chủ đích. Nếu docker_state được đặt là absent, role install-docker sẽ được chạy để gỡ cài đặt Docker khỏi các máy chủ đích.

    Các roles được chỉ định trong playbook được xác định bằng cách sử dụng cú pháp { role: <role-name>, when: <condition> }. Trong trường hợp này, nó được sử dụng để chỉ định role install-docker được chạy với điều kiện là docker_state phải có giá trị tương ứng là present hoặc absent.

    Vì vậy, nếu bạn muốn cài đặt Docker trên các máy chủ đích, bạn có thể thiết lập giá trị của docker_statepresent. Nếu bạn muốn gỡ cài đặt Docker, bạn có thể đặt giá trị của docker_stateabsent. Khi playbook được chạy, role install-docker sẽ được chạy tương ứng với giá trị của docker_state.

    Bước 3: Chạy playbook

    Bạn có thể chạy playbook bằng lệnh sau:

    ansible-playbook playbook.yml -e "docker_state=absent" # remove Docker
    ansible-playbook playbook.yml -e "docker_state=present" # install Docker

    Với các bước trên, bạn đã có thể tạo một role cài đặt và xóa Docker bằng Ansible.

    3. Chạy playbook.

    Sau khi đã tạo playbook và role, bạn có thể chạy playbook để cài đặt Docker trên các máy chủ đích bằng cách sử dụng lệnh ansible-playbook.

    Bước 1. Tạo một file inventory hosts để chỉ định các máy chủ đích. Ví dụ, bạn có thể tạo file hosts với nội dung sau:

    [docker]
    192.168.1.100
    192.168.1.101

    Trong đó 192.168.1.100192.168.1.101 là địa chỉ IP của các máy chủ đích.

    Bước 2: Chỉnh sửa file playbook.yml để sử dụng role docker đã tạo ở bước trước:

    - name: Install and configure Docker
      hosts: docker
      become: true
      roles:
        - docker

    Bước 3: Chạy playbook bằng lệnh ansible-playbook với các tham số sau:

    • -i hoặc --inventory-file: chỉ định file inventory.
    • -u hoặc --user: chỉ định tên người dùng để đăng nhập vào các máy chủ đích.
    • -k hoặc --ask-pass: yêu cầu nhập mật khẩu để đăng nhập vào các máy chủ đích (nếu sử dụng SSH password authentication).
    • -b hoặc --become: yêu cầu sử dụng quyền root để cài đặt Docker.

    Ví dụ, nếu bạn muốn sử dụng người dùng ubuntu để đăng nhập vào các máy chủ đích và sử dụng quyền root để cài đặt Docker, bạn có thể chạy lệnh sau:

    ansible-playbook -i hosts playbook.yml -u ubuntu -k -b

    Nếu mật khẩu của người dùng ubuntu trên các máy chủ đích là password, bạn sẽ được yêu cầu nhập mật khẩu để đăng nhập vào các máy chủ đích. Sau đó, Ansible sẽ chạy playbook và cài đặt Docker trên các máy chủ đích.

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email