Wyszukiwanie w witrynie

Jak zautomatyzować jednoczesne wdrożenia WordPress na wielu serwerach Linux za pomocą Ansible — część 3


W poprzednich dwóch artykułach z serii Ansible wyjaśniliśmy, jak zainstalować i skonfigurować Ansible, aby uruchamiał polecenia i wykonywał złożone zadania na kilku zdalnych serwerach jednocześnie.

W bieżącym samouczku wyjaśnimy, jak skonfigurować WordPress na tych samych zdalnych serwerach:

node1: 192.168.0.29
node2: 192.168.0.30

gdzie zainstalowaliśmy, włączyliśmy i uruchomiliśmy Apache (prawdopodobnie już wiesz, dlaczego w ostatnim samouczku jako pierwszy przykład wybraliśmy pracę z serwerem WWW).

Gorąco zachęcam Cię do przeczytania Części 1 i Części 2 przed kontynuowaniem, aby upewnić się, że znasz koncepcje związane z Ansible.

Jak zainstalować i skonfigurować narzędzie do automatyzacji „Ansible” do zarządzania IT – część 1

Jak używać podręczników Anisble do automatyzacji złożonych zadań na wielu serwerach zdalnych — część 2

Krok 1: Wprowadzenie ról Ansible

W miarę dodawania do zabaw coraz większej liczby zadań korzystanie z Poradników może być coraz trudniejsze. Z tego powodu zalecanym podejściem w takich sytuacjach (właściwie we wszystkich przypadkach) jest użycie struktury katalogów zawierającej dyrektywy dla każdej grupy zadań w odrębnych plikach.

Takie podejście pozwala nam ponownie wykorzystać te pliki konfiguracyjne w oddzielnych projektach w przyszłości. Każdy z tych plików definiuje tak zwaną rolę w ekosystemie Ansible.

W naszym przypadku utworzymy dwie role. Jeden z nich (zwany wp-dependents) zostanie użyty do zainstalowania zależności WordPress (PHP i MariaDB – nie ma potrzeby instalowania Apache, ponieważ jest już zainstalowany).

Druga rola (o nazwie wp-install-config) będzie obejmować wszystkie niezbędne zadania związane z instalacją i konfiguracją WordPressa.

Krok 2: Tworzenie ról Ansible

Ansible zawiera narzędzie o nazwie ansible-galaxy, które pomoże nam stworzyć strukturę katalogów dla naszych ról. Zrobimy to w /etc/ansible/playbooks (który utworzyliśmy w Części 2), ale teoretycznie możesz ustawić to w innym katalogu, jeśli chcesz.

cd /etc/ansible/playbooks
ansible-galaxy init wp-dependencies
ansible-galaxy init wp-install-config

Następnie zatwierdza nowo utworzone role.

ls -R /etc/ansible/playbooks

Na powyższym obrazku widzimy, że ansible-galaxy utworzył dwa katalogi o tej samej nazwie co nasze role i inne podkatalogi (domyślne, pliki , procedury obsługi, meta, zadania, szablony i vars) oraz README.md wewnątrz każdego z nich.

Ponadto we wszystkich wymienionych wcześniej katalogach, z wyjątkiem plików i szablonów, utworzono plik YAML o nazwie main.yml.

Zaczniemy od edycji następujących plików konfiguracyjnych, jak wskazano:

1. /etc/ansible/playbooks/wp- zależność/tasks/main.yml. Pamiętaj, że dołączamy httpd na wypadek, gdybyś nie korzystał z poprzednich samouczków z tej serii.

---
tasks file for wp-dependencies
- name: Update packages (this is equivalent to yum update -y)
  yum: name=* state=latest

- name: Install dependencies for WordPress
  yum: name={{ item }} state=present
  with_items:
        - httpd
        - mariadb-server 
        - mariadb
        - php 
        - php-mysql
        - MySQL-python

- name: Ensure MariaDB is running (and enable it at boot)
  service: name=mariadb state=started enabled=yes

- name: Copy ~/.my.cnf to nodes
  copy: src=/root/.my.cnf dest=/root/.my.cnf

- name: Create MariaDB database
  mysql_db: name={{ wp_mysql_db }} state=present

- name: Create MariaDB username and password
  mysql_user:
        login_user=root
        login_password=YourMariaDBRootPasswordHere
        name={{ wp_mysql_user }}
        password={{ wp_mysql_password }}
        priv=*.*:ALL

2. /etc/ansible/playbooks/wp- zależność/defaults/main.yml

---
defaults file for wp-dependencies
  wp_mysql_db: MyWP
  wp_mysql_user: wpUser
  wp_mysql_password: wpP4ss

3. /etc/ansible/playbooks/wp-install-config/tasks/main.yml:

---
tasks file for wp-install-config
- name: Create directory to download WordPress
  command: mkdir -p /opt/source/wordpress

- name: Download WordPress
  get_url: url=https://www.wordpress.org/latest.tar.gz dest=/opt/source/wordpress/wordpress.tar.gz validate_certs=no

- name: Extract WordPress
  command: "tar xzf /opt/source/wordpress/wordpress.tar.gz -C /var/www/html --strip-components 1"

- name: Send config file
  copy: src=/root/wp-config-sample.php dest=/var/www/html/wp-config.php mode=0644

4. wp-config-sample.php (dostarczony w tym Pastebin) w następujący sposób i zapisz go na swoim komputerze kontrolera Ansible (jak widać w ostatniej dyrektywie kopiowania powyżej , pobrałem go do katalogu domowego superużytkownika (/root/wp-config-sample.php).

Ważne: Należy pamiętać, że wartość zmiennych DB_NAME, DB_USER i DB_PASSWORD są takie same jak w /etc/ansible/playbooks/wp-dependentlies/defaults/main.yml:

…
/** The name of the database for WordPress */
define('DB_NAME', 'MyWP');

/** MySQL database username */
define('DB_USER', 'wpUser');

/** MySQL database password */
define('DB_PASSWORD', 'wpP4ss');
…

5. W przypadku nowych instalacji serwerów baz danych, w których hasło roota jest puste, jak w tym przypadku, niestety musimy ustawić hasło użytkownika root indywidualnie na każdym komputerze poprzez mysql_secure_installation .

O ile mi wiadomo, nie ma dostępnego obejścia, które umożliwiłoby ustawienie hasła roota za pomocą Ansible w tym samym kroku, w którym tworzysz konto administracyjnej bazy danych dla WordPressa.

Upewnij się, że używasz tego samego hasła na wszystkich hostach, a następnie skopiuj dane uwierzytelniające do pliku /root/.my.cnf (rzeczywista lokalizacja może się różnić w Twoim przypadku, ale we wszystkich przypadkach musi odpowiadać wartości parametru src dla zadania Kopiuj ~/.my.cnf do węzłów w pliku /etc/ansible/playbooks/wp-dependentlies/tasks/main.yml ).

W tym pliku (patrz wyżej) założyliśmy, że hasło roota to YourMariaDBRootPassword.

6. Następnie nasz podręcznik (/etc/ansible/playbooks/playbook.yml) będzie wyglądał na znacznie bardziej zorganizowany i prosty w porównaniu z poprzednim samouczkiem:

cat playbook.yml

- hosts: webservers
  roles:
        - wp-dependencies
        - wp-install-config

Wreszcie nadszedł czas, aby uruchomić te zadania, wywołując nasz podręcznik:

ansible-playbook playbook.yml

Sprawdźmy teraz, czy możemy uzyskać dostęp do strony administracyjnej WordPress przy użyciu adresów IP node1 192.168.0.29 i node2 192.168.0.30:

Ostatnie dwa kroki możesz zobaczyć na poniższym zrzucie ekranu:

Jak widać, przy użyciu Ansible możesz skonfigurować wiele instalacji WordPressa przy niewielkim lub żadnym wysiłku. Następnie możesz użyć odpowiedniego interfejsu użytkownika Administratora, aby skonfigurować każdą witrynę osobno.

Uwagi końcowe

Jeśli używasz innej dystrybucji do wdrożenia WordPress, nazwy pakietów mogą się różnić, ale sprowadza się to do instalacji serwera WWW Apache, serwera bazy danych MariaDB i modułu Python MySQL. W takim przypadku użyj systemu zarządzania oprogramowaniem swojej dystrybucji, aby wyszukać dokładną nazwę pakietu, który chcesz zainstalować.

Streszczenie

W tej serii wyjaśniliśmy, jak używać Ansible do uruchamiania poleceń i wykonywania złożonych zadań jednocześnie na kilku komputerach z systemem Linux.

Jednym z takich przykładów jest konfiguracja WordPress, co omówiliśmy w tym przewodniku. Mam nadzieję, że pojęcia i przykłady zawarte w tym samouczku okazały się dla Ciebie przydatne, niezależnie od tego, czy jesteś administratorem systemu, czy blogerem.

Życzę powodzenia i nie wahaj się do nas napisać, jeśli potrzebujesz pomocy lub masz jakieś uwagi lub sugestie!