Thursday, November 21, 2024

[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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories