GNU/Linux >> Znalost Linux >  >> Linux

Ansible Guide:Vytvořte Ansible Playbook pro LEMP Stack

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:

  1. Nastavit Ansible Playbook Project
  2. Vygenerujte strukturu adresářů rolí Ansible Playbook
  3. Nastavte hostitele a soubor site.yml
  4. Nastavení „běžných“ rolí – základní nastavení
  5. Nastavení „webových“ rolí – konfigurace Nginx a PHP-FPM
  6. Nastavení rolí 'db' – konfigurace databáze MySQL
  7. 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.

  1. Změna úložiště
  2. Aktualizovat úložiště
  3. Upgradujte balíčky na nejnovější verzi
  4. 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:

  1. Nainstalujte Nginx
  2. Nainstalujte PHP-FPM
  3. Nakonfigurujte php.ini
  4. Vytvořte virtuálního hostitele
  5. 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'.

  1. nainstalujte mysql
  2. Vytvořte databázi MySQL
  3. Vytvořit uživatele MySQL
  4. 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.


Linux
  1. Deconstructing ansible playbook

  2. Pochopení YAML pro Ansible

  3. Jak vytvořit Ansible Playbook

  1. Stručný úvod do rolí Ansible pro správu systému Linux

  2. 6 dovedností pro odstraňování problémů pro Ansible playbooky

  3. RHCE Ansible Series #9:Ansible Role

  1. Ansible Playbook:Jak vytvářet a konfigurovat Playbooky

  2. Jak používat značky v Ansible Playbook (příklady)

  3. jak vytvořit Ansible playbook pro získání verzí OS vzdálených hostitelů?