Como automatizar implantações simultâneas do WordPress em vários servidores Linux usando Ansible - Parte 3

Como automatizar implantações simultâneas do WordPress em vários servidores Linux usando Ansible - Parte 3

Nos dois artigos anteriores deste Ansible série, explicamos como instalar e configurar Ansible Para executar comandos e executar tarefas complexas em vários servidores remotos simultaneamente.

Automatize várias instalações do WordPress usando Ansible - Parte 3

No tutorial atual, explicaremos como configurar WordPress Nos mesmos servidores remotos:

Node1: 192.168.0.29 Node2: 192.168.0.30 

Onde instalamos, ativamos e iniciamos o Apache (você provavelmente já sabe por que escolhemos trabalhar com um servidor da web como um exemplo inicial no último tutorial).

Eu o encorajo a ler Parte 1 e Parte 2 Antes de prosseguir para garantir que você esteja familiarizado com os conceitos associados ao Ansible.

Como instalar e configurar a ferramenta de automação 'Ansible' para gerenciamento de TI - Parte 1

Como usar os manuais Anisble para automatizar tarefas complexas em vários servidores remotos - Parte 2

Etapa 1: Apresentando papéis Ansible

Quando você começa a adicionar mais e mais tarefas às peças, seu Playbooks pode se tornar cada vez mais difícil de lidar. Por esse motivo, a abordagem recomendada nessas situações (na verdade, em todos os casos) é usar uma estrutura de diretório que contém as diretivas para cada grupo de tarefas em arquivos distintos.

Essa abordagem nos permite reutilizar esses arquivos de configuração em projetos separados mais adiante. Cada um desses arquivos define o que é chamado no Ecossistema Ansible um papel.

No nosso caso, criaremos dois papéis. Um deles (chamado Dependências de WP) será usado para instalar as dependências do WordPress (Php e Mariadb - Não há necessidade de instalar Apache Como já está instalado).

O outro papel (chamado WP-Install-Config) incluirá todas as tarefas necessárias associadas à instalação e configuração do WordPress.

Etapa 2: Criando papéis Ansible

Ansible vem com um utilitário chamado Ansible-galaxia Isso nos ajudará a criar a estrutura do diretório para nossos papéis. Faremos isso em /etc/Ansible/Playbooks (que criamos em Parte 2) Mas, em teoria, você pode configurá -lo em outro diretório se quiser.

# CD/etc/Ansible/Playbooks # Ansible-Galaxy Init WP-Dependências # Ansible-Galaxy Init WP-Install-Config 
Ansible: Crie papéis do WordPress

Em seguida, confirma os papéis recém -criados.

# ls -r/etc/Ansible/Playbooks 
Ansible: Confirme a estrutura do diretório WordPress

Na imagem acima, podemos ver que Ansible-galaxia criou dois diretórios com o mesmo nome que nossos papéis e outros subdiretos (padrões, arquivos, manipuladores, Meta, tarefas, modelos, e vars) e a Leia-me.MD Arquivo dentro de cada um deles.

Além disso, um arquivo YAML nomeado principal.yml foi criado dentro de todos os diretórios listados anteriormente, com exceção de arquivos e modelos.

Começaremos editando os seguintes arquivos de configuração, conforme indicado:

1. /etc/Ansible/Playbooks/WP-Dependências/Tasks/Main.yml. Observe que estamos incluindo httpd Caso você não tenha seguido junto com os tutoriais anteriores desta série.

principal.yml
--- # Arquivo de tarefas para dependências WP - Nome: Atualizar pacotes (isso é equivalente a yum atualização -y) yum: nome =* state = mais recente - nome: instalar dependências para wordpress yum: nome = item state = presente com_items : - httpd - mariadb -server - mariadb - php - php -mysql - mysql -python - nome: verifique se o mariadb está sendo executado (e habilitando -o) serviço: name = mariadb state = iniciado ativado = sim - nome: copy ~.meu.cnf para nós cópia: src =/root/.meu.CNF dest =/root/.meu.CNF - Nome: Crie um banco de dados MARIADB MySQL_DB: name = wp_mysql_db state = presente - Nome: Crie MariadB Username e Senha MySQL_USER: LOGIN_USER = ROOT LOGIN_PASS =MMODBROTPRATRASTHETHETHET: LOGIN_USER = raiz) =*.*:TODOS 

2. /etc/Ansible/Playbooks/WP-Dependências/Padrão/Main.yml

principal.yml
--- # Arquivo padrão para WP-dependências wp_mysql_db: mywp wp_mysql_user: wpuser wp_mysql_password: wpp4sss 

3. /etc/Ansible/playbooks/wp-Install-Config/Tasks/Main.yml:

principal.yml
--- # Tasks Arquivo para WP -Install -Config -Nome: Criar diretório para baixar o comando wordpress: mkdir -p/opt/fonte/wordpress -nome: download wordpress get_url: url = https: // www.WordPress.org/mais recente.alcatrão.gz dest =/opt/fonte/wordpress/wordpress.alcatrão.gz validate_certs = não - Nome: Extrair WordPress comando: "Tar xzf/opt/fonte/wordpress/wordpress.alcatrão.gz -c/var/www/html-strip-components 1 "-nome: envia cópia do arquivo de configuração: src =/root/wp-config-sample.php dest =/var/www/html/wp-config.modo php = 0644 

4. WP-Config-Sple.php (Fornecido neste Pastebin) da seguinte maneira e salve -a em sua máquina de controlador Ansible (como você pode ver na última diretiva de cópia acima, eu o baixei no diretório doméstico do SuperUser (/root/wp-config-sple.php).

Importante: Por favor, observe que o valor para variáveis Db_name, Db_user, e Db_password são os mesmos que em /etc/Ansible/Playbooks/WP-Dependências/Padrão/Main.yml:

WP-Config-Sple.php
… / ** O nome do banco de dados para WordPress* / define ('db_name', 'mywp'); / ** MYSQL DATABASE NOME DE USERNO*/ DEFINE ('DB_USER', 'WPUSER'); / ** MySQL Database Senha*/ define ('db_password', 'wpp4ss');… 

5. Para novas instalações do servidor de banco de dados em que a senha raiz está vazia, como neste caso, infelizmente precisamos configurar a senha para o usuário raiz individualmente em todas as máquinas através mysql_secure_installation.

Até onde eu sei, não há solução alternativa disponível que permitirá que você configure a senha raiz via Ansible Na mesma etapa em que você cria a conta administrativa do banco de dados para o WordPress.

Certifique -se de usar a mesma senha em todos os hosts e copie as credenciais em /raiz/.meu.CNF (o local real pode diferir no seu caso, mas em todos os casos precisa corresponder ao valor do src parâmetro para a tarefa Cópia ~//.meu.CNF para nós em /etc/Ansible/Playbooks/WP-Dependências/Tasks/Main.yml).

Nesse arquivo (veja acima), assumimos que a senha para root é YourMariAdBrootPassword.

Senha do banco de dados Ansible

6. Em seguida, nosso manual (/etc/Ansible/Playbooks/Playbook.yml) parecerá muito mais organizado e simples quando comparado ao tutorial anterior:

# Cat Playbook.yml 
Ansible WordPress Playbooks
- Hosts: WebServers Papunos:-WP-Dependências-WP-Install-Config 

Finalmente, é hora de executar essas tarefas invocando nosso manual:

# Playbook Ansible-Playbook.yml 

Agora vamos verificar se podemos acessar a página de administrador do WordPress usando os endereços IP de Node1 192.168.0.29 e Node2 192.168.0.30:

Instalação Ansible WordPress

Você pode visualizar as duas últimas etapas no seguinte screencast:

Como você pode ver, você pode configurar várias instalações do WordPress com pouco ou nenhum esforço usando Ansible. Então você pode usar o respectivo Admin Interface do usuário para configurar cada site separadamente.

Considerações finais

Se você estiver usando outra distribuição para implantar WordPress, O nome dos pacotes pode variar, mas tudo se resume à instalação do servidor da Web Apache, do servidor de banco de dados MariaDB e do módulo Python MySQL. Se for esse o caso, use o sistema de gerenciamento de software da sua distribuição para pesquisar o nome exato do pacote que você precisa instalar.

Resumo

Nesta série, explicamos como usar Ansible Para executar comandos e executar tarefas complexas em várias máquinas Linux simultaneamente.

Um desses exemplos está configurando WordPress, Como discutimos neste guia. Se você é um administrador do sistema ou um blogueiro, espero que você tenha encontrado os conceitos e exemplos neste tutorial útil.

Boa sorte e não hesite em nos deixar uma linha se precisar de ajuda ou tiver algum comentário ou sugestão!