Một tool để chạy shell script trên remote server hiệu quả
Thường dùng khi setup server, setup môi trường lúc đầu, khác với github action là chạy để build - deploy trong môi trường sẵn có
Thay vì khi có server mới, ta lặp đi lặp lại các bước setup server như:
Thì mình viết trước script để làm các công việc trên, và khi có server mới, thay đổi thông tin ssh server và chạy 1 lệnh ansible là xong, rất thuận tiện.
services:
soda_ansible:
image: alpine/ansible
container_name: soda_ansible
restart: on-failure:5
logging:
driver: 'json-file'
options:
max-size: '50m'
volumes:
- ./:/app
working_dir: /app
command: sleep infinity
all:
hosts:
server1:
ansible_host: ip.server.net
ansible_user: user
ansible_ssh_private_key_file: /app/ssh/ssh.pem
ansible_port: 22
jump_server:
ansible_host: ip.server2.net
ansible_user: user
ansible_ssh_private_key_file: /app/ssh/ssh.pem
ansible_port: 22
ansible_ssh_common_args: "-o ProxyCommand='ssh -W %h:%p [email protected] -i /app/ssh/ssh.pem'"
---
- name: Run script on remote servers
hosts: server1
become: yes # run as sudo root
tasks:
- name: Copy script to remote server
copy:
src: ../scripts/setup_server.sh
dest: /tmp/setup_server.sh
mode: '0755'
- name: Execute script on remote server
command: bash /tmp/setup_server.sh
- name: Execute script on remote server
shell: |
pwd
ls -al
cat /etc/os-release
ansible-playbook -i inventory.yml setup_server.yml
ansible all -i inventory.yml -m ping