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_state
là present
. Nếu bạn muốn gỡ cài đặt Docker, bạn có thể đặt giá trị của docker_state
là absent
. 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.100
và 192.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.