Обсудим, как установить LEMP-стек с помощью Ansible. Разберемся с тем, как автоматизировать рутинные задачи, что такое Ansible и как он работает.
Vagrant.configure("2") do | config |
config.vm.define "controlnode" do |controlnode|
controlnode.vm.box = "ubuntu/focal64"
controlnode.vm.hostname = "controlnode"
controlnode.vm.network "private_network", ip: "192.168.50.4"
controlnode.vm.provision "shell", inline: <<-SHELL
sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/#g' /etc/ssh/sshd_config
service ssh restart
SHELL
end
config.vm.define "server" do |server|
server.vm.box = "ubuntu/focal64"
server.vm.hostname = "server"
controlnode.vm.network "private_network", ip: "192.168.50.5"
controlnode.vm.provision "shell", inline: <<-SHELL
sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/#g' /etc/ssh/sshd_config
service ssh restart
SHELL
end
vagrant@controlnode:~/ansible$ 1s
hosts.ini playbook.yml
vagrant@controlnode:~/ansible$ ansible-playbook
hosts: "all"
become: true
tasks:
name: "Install nginx via apt"
ansible.builtin.apt:
name: "nginx"
state: "latest"
update_cache: true
name: "Delete /var/www/html folder"
ansible.builtin.file:
path: "/var/www/html"
state: "absent"
name: "Copy our lending to /var/www/html folder"
ansible.builtin.copy:
src: "files/html"
dest: "/var/www/"
owner: "vagrant"
group: "vagrant"
mode: "0644"
ansible-playbook playbook.yml -i hosts.ini
#################
# LEMP PLAYBOOK #
#################
---
- hosts: "all"
become: true
roles:
- nginx # все таски файла main.yml по пути %директория ansible%/roles/nginx/tasks/
- mysql # все таски файла main.yml по пути %директория ansible%/roles/mysql/tasks/
- php # все таски файла main.yml по пути %директория ansible%/roles/php/tasks/
tasks:
- name: "Reload nginx" # этот таск не относится к ролям напрямую, поэтому вынесен после выполнения всех ролей
ansible.builtin.service:
name: "nginx"
state: "reloaded"