Biến | Mô Tả | Ví dụ |
---|---|---|
SCRIPT_NAME | Tên file script cần deploy | my_script.sh |
SCRIPT_SRC | Đường dẫn thư mục chứa script trên control node | ./ |
SCRIPT_DEST | Đường dẫn đích trên máy chủ từ xa | /usr/local/bin |
SCRIPT_USER_OWNER | Chủ sở hữu của file script | centos |
SCRIPT_GROUP_OWNER | Nhóm sở hữu của file script | centos |
DEPLOY_FOR_USER | Người dùng lập lịch cron | centos |
MINUTE | Giá trị phút trong crontab | "*/10" (10 phút/lần) |
HOUR, DAY, MONTH, WEEKDAY | Các thông số thời gian crontab khác | "*" (mọi thời điểm) |
- name: "Create the directory if it does not exist" ansible.builtin.file: path: "{{ SCRIPT_DEST }}" state: directory mode: '0755'
- name: "Place Script at the desired path" ansible.builtin.copy: src: "{{ SCRIPT_SRC }}/{{ SCRIPT_NAME }}" dest: "{{ SCRIPT_DEST }}/{{ SCRIPT_NAME }}" owner: "{{ SCRIPT_USER_OWNER }}" group: "{{ SCRIPT_GROUP_OWNER }}" mode: '0755'
SCRIPT_SRC
để tránh lỗi không tìm thấy file nguồn khi triển khai.- name: "make crontab entry for the script" ansible.builtin.cron: name: "Test Script deployed by Ansible" job: "{{ SCRIPT_DEST }}/{{ SCRIPT_NAME }}" user: "{{ DEPLOY_FOR_USER }}" minute: "{{ MINUTE }}" hour: "{{ HOUR }}" day: "{{ DAY }}" month: "{{ MONTH }}" weekday: "{{ WEEKDAY }}"
MINUTE
.- name: Deploy Script and Make a Crontab Entry hosts: all become: true gather_facts: false vars: SCRIPT_NAME: <script-name> SCRIPT_SRC: ./ SCRIPT_DEST: <destination-path-on-remote-server> SCRIPT_USER_OWNER: "centos" SCRIPT_GROUP_OWNER: "centos" DEPLOY_FOR_USER: "centos" MINUTE: "*/10" HOUR: "*" DAY: "*" MONTH: "*" WEEKDAY: "*" tasks: - name: "Create the directory if it does not exist" ansible.builtin.file: path: "{{ SCRIPT_DEST }}" state: directory mode: '0755'
- name: "Place Script at the desired path" ansible.builtin.copy: src: "{{ SCRIPT_SRC }}/{{ SCRIPT_NAME }}" dest: "{{ SCRIPT_DEST }}/{{ SCRIPT_NAME }}" owner: "{{ SCRIPT_USER_OWNER }}" group: "{{ SCRIPT_GROUP_OWNER }}" mode: '0755'
- name: "make crontab entry for the script" ansible.builtin.cron: name: "Test Script deployed by Ansible" job: "{{ SCRIPT_DEST }}/{{ SCRIPT_NAME }}" user: "{{ DEPLOY_FOR_USER }}" minute: "{{ MINUTE }}" hour: "{{ HOUR }}" day: "{{ DAY }}" month: "{{ MONTH }}" weekday: "{{ WEEKDAY }}"
deploy_script.yml
.SCRIPT_SRC
.ansible-playbook -i inventory.ini deploy_script.yml
inventory.ini
sẽ chứa danh sách các hostname hoặc IP máy chủ từ xa.Từ lời khuyên của tác giả: Hãy tận dụng Ansible để tự động hóa các tác vụ thủ công nhàm chán, tiết kiệm thời gian và tránh lỗi cấu hình trên nhiều máy chủ cùng lúc.