Ansible je jednoduchý automatizační nástroj, který automatizuje nasazování softwarových aplikací, poskytování cloudu a správu konfigurace. Je to nástroj pro orchestraci serverů, který vám pomáhá spravovat a ovládat velké množství serverových uzlů z jednoho místa zvaného 'Control Machines'. Ansible vytvořil Michael DeHaan v roce 2012 a je napsán v Pythonu a Powershell.
V tomto tutoriálu vám ukážeme, jak vytvořit základní Ansible Playbook pro poskytování LEMP Stack na Ubuntu 18.04 Server. Naučíte se, jak vytvořit základní Ansible Playbook, který lze škálovat pro jiné projektové aplikace PHP, jako je WordPress, Nextcloud atd.
Předpoklad
- 2 OS Ubuntu.
- 10.5.5.20 možné
- 10.5.5.26 ustanovení
- Znalost základního použití Ansible
- Oprávnění uživatele root
Co uděláme:
- Nastavit Ansible Playbook Project
- Vygenerujte strukturu adresářů rolí Ansible Playbook
- Nastavte hostitele a soubor site.yml
- Nastavení „běžných“ rolí – základní nastavení
- Nastavení „webových“ rolí – konfigurace Nginx a PHP-FPM
- Nastavení rolí 'db' – konfigurace databáze MySQL
- Testování
Krok 1 – Nastavení projektu Ansible Playbook
Ansible Playbook je sada instrukcí, které odešlete ke spuštění na jednom serveru nebo skupině hostitelů serveru. Představuje ansible-provisioning, kde je automatizace definována jako úkoly a všechny úlohy, jako je instalace balíčků, úprava souborů, budou prováděny moduly ansible.
Ansible Playbook obsahuje některé základní konfigurace, včetně informací o hostitelích a uživatelích prováděcích serverů, seznam úkolů, které budou implementovány do zajišťovacích serverů, šablony a vlastní konfigurace a skupinu proměnných, které jsou součástí šablon a úloh.
Nejprve vytvořte hlavní adresář projektu na stroji 'ansible-control'. V hlavním adresáři projektu budou uloženy všechny naše adresáře, soubory a konfigurace.
Vytvořte adresář projektu Ansible s názvem 'project-lemp' a přejděte do něj.
mkdir project-lemp/
cd project-lemp
Nyní vytvořte nový konfigurační soubor 'hosts' a 'site.yml' a poté vytvořte nový adresář s názvem 'roles'.
touch hosts site.yml
mkdir -p roles/
Podrobnosti o konfiguracích:
hostitelé - Je to inventární soubor, který obsahuje informace o spravovaných serverech od ansible. Umožňuje vám vytvořit skupinu serverů, které vám usnadní správu a škálování samotného souboru inventáře. Soubor inventáře lze vytvořit v mnoha různých formátech, včetně formátů INI a YAML.
site.yml - Soubor hlavního playbooku, který obsahuje skupinu hostitelů, která bude spravována pomocí našich dostupných rolí.
role - je to skupina herních knih Ansible, které budou použity k zajištění serveru. Ansible role mají své vlastní adresářové struktury, každá role bude obsahovat adresáře jako tasky, handlery, vars atd.
Krok 2 – Generování Ansible rolí pro adresářovou strukturu
V tomto kroku vygenerujeme adresář ansible roles pomocí příkazu ansible-galaxy. Vygenerujeme dvě role nazvané 'společné' role a 'webové' role.
V adresáři 'project-lemp' přejděte do adresáře 'role'.
cd role/
Spuštěním příkazu ansible-galaxy níže vygenerujte adresář struktury rolí a soubory pro role 'common' a 'web'.
ansible-galaxy init common
ansible-galaxy init web
ansible-galaxy init db
Poté zkontrolujte všechny dostupné struktury adresářů rolí pomocí následujícího příkazu.
strom .
Zobrazí se vám výsledek, jak je uvedeno níže.
Krok 3 – Nastavení hostitelů a site.yml
Soubor 'hosts' bude obsahovat seznam a skupinu serveru spravovaného Ansible. Pro tuto příručku vytvoříme skupinu nazvanou 'lemp' s členem 'server01' a IP adresou 10.5.5.26.
Upravte soubor 'hosts' pomocí editoru vim.
hostitelé vim
Vložte konfiguraci níže.
[lemp]
server01 ansible_host=10.5.5.26
Uložit a zavřít.
Dále upravte konfigurační soubor site.yml.
vim site.yml
Vložte konfigurace níže.
---
- hostitelé:lemp
remote_user:hakase
stát se:ano
role:
- běžné
– web
– db
Uložit a zavřít.
Krok 3 – Nastavení společných rolí
V tomto kroku nastavíme společné role. A abychom to mohli udělat, musíme vytvořit seznam úkolů, které budeme dělat.
Níže je uveden seznam úkolů, které budeme provádět na „společných“ rolích.
- Změna úložiště
- Aktualizovat úložiště
- Upgradujte balíčky na nejnovější verzi
- Nastavte časové pásmo serveru
Nyní přejděte do adresáře 'common' a upravte konfiguraci 'tasks/main.yml'.
cd common/
vim tasks/main.yml
Vytvořte úlohu pro změnu úložiště a my použijeme modul 'copy', který zkopíruje základní 'sources.list' z adresáře 'files' do vzdáleného hostitele '/etc/apt/'.
- name:Změna úložiště Ubuntu 18.04Krok 4 – Nastavení rolí 'web'
copy:
src:sources.list
dest:/etc/apt/
záloha:ano
Vytvořte úlohu pro aktualizaci úložiště a upgradujte všechny balíčky na nejnovější verzi pomocí modulu 'apt'.
- name:Aktualizujte úložiště a balíčky aktualizací
apt:
upgrade:dist
update_cache:yes
Nyní vytvořte úlohu pro konfiguraci systémového časového pásma pomocí modulu ansible timezone.
- name:Nastavte časové pásmo do Asie/Jakarty
časové pásmo:
název:Asie/Jakarta
stav:nejnovější
Uložit a zavřít.
Poté vytvořte novou konfiguraci úložiště 'sources.list' v adresáři 'files'.
vim files/sources.list
Vyberte nejbližší úložiště vašeho serveru, níže je moje.
deb http://buaya.klas.or.id/ubuntu/ bionic hlavní omezené
deb http://buaya.klas.or.id/ubuntu/ bionic-updates hlavní omezené
deb http://buaya.klas.or.id/ubuntu/ bionický vesmír
deb http://buaya.klas.or.id/ubuntu/ bionic-updates vesmír
deb http://buaya. klas.or.id/ubuntu/ bionic multiverse
deb http://buaya.klas.or.id/ubuntu/ bionic-updates multiverse
deb http://buaya.klas.or.id/ ubuntu/ bionic-backports hlavní omezený vesmír multivesmír
deb http://buaya.klas.or.id/ubuntu/ bionic-security hlavní omezený
deb http://buaya.klas.or.id/ ubuntu/ bionic-security universe
deb http://buaya.klas.or.id/ubuntu/ bionic-security multiverse
Uložit a zavřít.
konečně byla dokončena konfigurace 'společných' rolí.
Krok 4 – Nastavení rolí „webu“
V tomto kroku nastavíme „webové“ role. Provede některé úkoly včetně instalace webového serveru Nginx, PHP-FPM s některými základními rozšířeními a konfigurace PHP-FPM s Nginx.
Níže jsou uvedeny podrobné úkoly, které budeme provádět na „webových“ rolích:
- Nainstalujte Nginx
- Nainstalujte PHP-FPM
- Nakonfigurujte php.ini
- Vytvořte virtuálního hostitele
- Přidat soubor phpinfo
Přejděte do adresáře 'web' a upravte soubor 'tasks/main.yml'.
cd web/
vim tasks/main.yml
Vytvořte první úlohu pro instalaci nginx pomocí modulu apt.
- name:Install Nginx
apt:
name:nginx
state:nejnovější
Nyní vytvořte úlohu pro instalaci PHP-FPM s některými základními rozšířeními. A pro instalaci více balíčků můžeme použít formát pythonu „seznam“, jako je níže.
- name:Instal PHP-FPM
apt:
name:['php','php-fpm','php-common','php-cli','php-curl' ]
stav:nejnovější
Dále přidáme nové řádky do konfigurace php.ini pomocí modulu 'blockinfile'. A na konci řádku upozorníme ansible na restartování služby php-fpm po konfiguraci souboru php.ini.
- name:Konfigurace php.ini
blockinfile:
cíl:/etc/php/{{ php_version }}/fpm/php.ini
blok:|
datum .time =Asia/Jakarta
cgi-fix_pathinfo =0
záloha:ano
upozornit:restartovat php-fpm
Nyní zkopírujeme konfiguraci virtuálního hostitele nginx pomocí modulu 'šablona'. Modul šablony zkopíruje konfiguraci z adresáře 'templates' na vzdálený server. Zkopírujeme šablonu virtuálního hostitele jinja2 'vhost.j2' do adresáře '/etc/nginx/sites-enabled/' a jako poslední upozorníme ansible na restartování služby nginx.
- name:Vytvořit virtuální hostitel Nginx
šablona:
src:vhost.j2
cíl:/etc/nginx/sites-enabled/vhost-{{ název_domény }}
upozornit:restartujte nginx
Poté vytvoříme nové úlohy pro vytvoření webového kořenového adresáře pomocí modulu 'file' a zkopírujeme do něj šablonu index.php.
- name:Vytvořit webový kořenový adresář
soubor:
cesta:/var/www/{{ název_domény }}
stav:adresář
- název :Nahrajte soubory index.html a info.php
šablona:
src:index.php.j2
cíl:/var/www/{{ název_domény }}/index.php
Uložit a zavřít.
Nyní nakonfigurujeme obslužné rutiny pro restartování služby nginx a php-fpm. Upravte konfiguraci 'handlers/main.yml' pomocí editoru vim.
vim handlers/main.yml
Vložte konfigurace níže.
- název:restart nginx
služba:
název:nginx
stav:restartováno
povoleno:ano
- název:restart php-fpm
služba:
název:php{{ php_version }}-fpm
stav:restartováno
povoleno:ano
Uložit a zavřít.
Dále upravíme konfiguraci 'vars/main.yml'. V horní části konfigurací si všimnete konfigurace proměnných '{{ php_version }}' a '{{ domain_name }}'. Tyto proměnné představují naše nastavení prostředí pro verzi php a název domény, která bude použita. Proměnná umožňuje více opakované použití, protože potřebujeme pouze upravit konfiguraci proměnné 'vars/main.yml' a nikoli upravit základní konfiguraci.
Upravte konfiguraci proměnných 'vars/main.yml' pomocí editoru vim.
vim vars/main.yml
Vložte konfigurace níže.
php_version:7.2
název_domény:hakase-labs.io
Uložit a zavřít.
Nyní vytvoříme konfigurace šablon jinja2 'index.php.j2' a 'vhost.j2' v adresáři 'templates/'.
vim templates/index.php.j2
Vložte konfiguraci níže.
index.html pro doménu {{ domain_name }}
phpinfo();
?>
Uložit a zavřít.
Poté vytvořte šablonu pro konfiguraci virtuálního hostitele nginx 'vhost.j2'.
vim templates/vhost.j2
Vložte konfigurace níže.
server {>
listen 80;
listen [::]:80;
root /var/www/{{ domain_name }};
index index .php index.html index.htm index.nginx-debian.html;
název_serveru {{ název_domény }};
umístění / {
try_files $uri $ uri/ =404;
}
# předat skripty PHP na server FastCGI
#
umístění ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php{{ php_version }}-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
zahrnout fastcgi_params;
}
Uložte a zavřete konfiguraci a tím je konfigurace webových rolí hotová.
Krok 5 – Nastavení rolí 'db'
V tomto kroku nakonfigurujeme role 'db' pro instalaci a konfiguraci databáze MySQL.
Níže jsou uvedeny podrobnosti o úkolech, které provedou role 'db'.
- nainstalujte mysql
- Vytvořte databázi MySQL
- Vytvořit uživatele MySQL
- restartujte mysql
Přejděte do adresáře 'db' a upravte konfiguraci 'tasks/main.yml'.
cd db/
vim tasks/main.yml
Nyní nainstalujte balíčky MySQL pomocí modulu 'apt' a formátu pythonu 'list' pro instalaci více balíčků.
- name:Install MySQL
apt:
name:['mysql-server','mysql-client','python-mysqldb']
stav:nejnovější
notify:restart mysql
Poté vytvořte nové úlohy pro vytvoření databáze MySQL a uživatele a poté udělte všechna oprávnění uživatele k databázi.
- name:Vytvořit databázi
mysql_db:
name:'{{ db_name }}'
stav:přítomný
- name:Vytvořit uživatele pro databázi
mysql_user:
jméno:'{{ db_user }}'
heslo:'{{ db_pass }}'
šifrováno:ano
priv:'{{ db_name } }.*:ALL'
stav:přítomný
Uložit a zavřít.
Dále upravte konfiguraci 'handlers/main.yml'.
vim handlers/main.yml
Vložte konfiguraci úlohy pro restartování služby MySQL.
- name:restart mysql
service:
name:mysql
state:restarted
enabled:yes
Uložit a zavřít.
Poté upravte konfiguraci proměnné vars 'vars/main.yml'.
vim vars/main.yml
Níže vložte tyto proměnné pro databázi MySQL a uživatelskou konfiguraci.
db_name:hakase-db
db_user:hakase
db_pass:'*C960D382DB42E57D3BAC33891CF87900DCB1A869'
Uložit a zavřít.
Proměnná 'db_pass' má heslo zašifrované MySQL a pomocí online nástrojů můžete vygenerovat zašifrované heslo MySQL.
Krok 6 – Spusťte Ansible Playbook
Přejděte do adresáře projektu Ansible.
cd project-lemp/
Spusťte níže uvedený příkaz ansible-playbook.
ansible-playbook -i hosts site.yml
Nyní ansible spustí všechny role, které hostiteli přiřadíme. Po dokončení se vám zobrazí výsledek, jak je uvedeno níže.
Ujistěte se, že se nezobrazuje žádná chyba.
Krok 7 – Testování
Otevřete webový prohlížeč a do adresního řádku zadejte název domény http://hakase-labs.io.
A zobrazí se vám indexová stránka s phpinfo, jak je uvedeno níže.
PHP-FPM a Nginx fungují.
Dále se vraťte na serverový terminál a přihlaste se k serveru MySQL pomocí uživatele a hesla, které jsme vytvořili v proměnné rolí 'mysql'.
mysql -u hakase -p
HESLO:hakasepass
zkontrolujte seznam databází vlastněných uživatelem.
zobrazit databáze;
A budete přihlášeni do prostředí MySQL a v seznamu se vám zobrazí databáze s názvem 'hakase-db'.
Nakonec byl vytvořen a úspěšně otestován Ansible Playbook pro instalaci a konfiguraci LEMP Stack.