# Instalando Wildfly com Ansible ---- Os Playboks são usados na maioria das vezes para construir interações complexas que requerem, por exemplo, provisionamento de software em máquinas remotas. Neste exemplo, veremos como combinar nosso Playbook que irá instalar o JDK o unzip e o Wildfly, o servidor de aplicativos por sua vez será configurado no modo standalone, e, ao fim da execução do playbook o mesmo estará pronto para utilização em ambiente de teste. Link para Download [Clique aqui](https://github.com/isweluiz/ansible/raw/master/wildfly21-install-ansible.tar.gz) Link para o código [Clique aqui](https://github.com/isweluiz/ansible/tree/master/wildfly21-install-ansible) ### Requisitos ---- Certifique-se que o seu host(target) possui acesso a internet, python 2.6 ou superior instalado para suportar os módulos do ansible e também algum repositório que possui o JAVA para download. ```bash [root@ansible-master projeto-wildfly]# ls ansible.cfg inventory playbook.yml roles ``` Acesse o arquivo de **inventário** para configurar os hosts que deseja realizar a instalação do wildfly em modo standalone. Se certifique que o acesso ssh entre seu host do ansible e os nodes está funcional. ```bash= [root@ansible-master projeto-wildfly]# ansible all -m ping 192.168.99.107 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } ``` ### Como utilzar este Playbook Ao baixar o arquivo .zip, descompacte no seu diretório de preferência. Após descompactar você irá se deparar com a lista arquivos abaixo: - ansible.cfg - inventory - playbok.yml As tasks estão dentro do diretório **roles/isweluiz.wildfly-install/tasks/main.yml.** ### Checando a syntax ```bash [root@ansible-master projeto-wildfly]# ansible-playbook --syntax-check playbook.yml playbook: playbook.yml ``` ### Variáveis definidas roles/isweluiz.wildfly-install/vars/main.yml ```yml --- https_uri: https://download.jboss.org/wildfly/21.0.1.Final/wildfly-21.0.1.Final.zip wildfly_user: wildfly ``` O endereço das interfaces pública e de gerenciamento serão alteradas pela variável do IPV4 padrão do host destino, "{{ ansible_default_ipv4.address }}". ```xml <interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:192.168.0.86}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:192.168.0.86}"/> ``` ## Exemplo de execução playbook.yml ```ỳml --- # https://www.wildfly.org/downloads/ - name: Instalacao do Wildfly 21.0.1 - hosts: webapp become: true roles: - isweluiz.wildfly-install ... ``` ```bash [root@ansible-master projeto-wildfly]# ansible-playbook playbook.yml PLAY [webapp] ********************************************************************************** TASK [Gathering Facts] ************************************************************************* ok: [192.168.99.107] TASK [isweluiz.wildfly-install : Criando usuario de sistema] *********************************** ok: [192.168.99.107] TASK [isweluiz.wildfly-install : Baixando e instalando | Java e unzip] ************************* ok: [192.168.99.107] TASK [isweluiz.wildfly-install : Validando a instalacao do JAVA] ******************************* changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Checando firewalld] ******************************************* changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Desativando firewalld] **************************************** ok: [192.168.99.107] TASK [isweluiz.wildfly-install : Verificando se wildfly-21.0.1.Final foi existe] *************** ok: [192.168.99.107] TASK [isweluiz.wildfly-install : Baixando wildfly 21.0.1] ************************************** changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Criando link simbolico para /opt/wildfly] ********************* changed: [192.168.99.107] TASK [isweluiz.wildfly-install : file] ********************************************************* changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Alterando proprietario do diretorio para wildfly] ************* changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Alterando endereco da interface em standalone.xml] ************ changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Criando usuario para acesso a console] ************************ changed: [192.168.99.107] TASK [isweluiz.wildfly-install : debug] ******************************************************** ok: [192.168.99.107] => { "msg": { "changed": true, "cmd": "JBOSS_HOME='/opt/wildfly' /bin/bash -c '/opt/wildfly/bin/add-user.sh -u wildfly -p admin@wildfly'", "delta": "0:00:01.418774", "end": "2020-12-09 16:34:15.552740", "failed": false, "rc": 0, "start": "2020-12-09 16:34:14.133966", "stderr": "", "stderr_lines": [], "stdout": "Added user 'wildfly' to file '/wildfly-21.0.1.Final/standalone/configuration/mgmt-users.properties'\nAdded user 'wildfly' to file '/wildfly-21.0.1.Final/domain/configuration/mgmt-users.properties'", "stdout_lines": [ "Added user 'wildfly' to file '/wildfly-21.0.1.Final/standalone/configuration/mgmt-users.properties'", "Added user 'wildfly' to file '/wildfly-21.0.1.Final/domain/configuration/mgmt-users.properties'" ] } } TASK [isweluiz.wildfly-install : Configurando inicializacao como servico] ********************** changed: [192.168.99.107] => (item={'src': '/opt/wildfly/docs/contrib/scripts/init.d/wildfly-init-redhat.sh', 'dest': '/etc/init.d/wildfly'}) changed: [192.168.99.107] => (item={'src': '/opt/wildfly/docs/contrib/scripts/init.d/wildfly.conf', 'dest': '/etc/default'}) TASK [isweluiz.wildfly-install : Ajustando arquivo de servico] ********************************* changed: [192.168.99.107] => (item={'regexp': '^# JBOSS_HOME\\="\\/opt\\/wildfly"', 'replace': 'JBOSS_HOME="/opt/wildfly"'}) changed: [192.168.99.107] => (item={'regexp': '^# JBOSS_USER\\=wildfly', 'replace': 'JBOSS_USER=wildfly'}) changed: [192.168.99.107] => (item={'regexp': '^# JBOSS_MODE\\=standalone', 'replace': 'JBOSS_MODE=standalone'}) changed: [192.168.99.107] => (item={'regexp': '^# JBOSS_CONFIG\\=standalone.xml', 'replace': 'JBOSS_CONFIG=standalone.xml'}) changed: [192.168.99.107] => (item={'regexp': '^# STARTUP_WAIT\\=60', 'replace': 'STARTUP_WAIT=60'}) changed: [192.168.99.107] => (item={'regexp': '^# SHUTDOWN_WAIT\\=60', 'replace': 'SHUTDOWN_WAIT=60'}) TASK [isweluiz.wildfly-install : Instalando wildfly como servico] ****************************** changed: [192.168.99.107] => (item=/usr/sbin/chkconfig --add /etc/init.d/wildfly) changed: [192.168.99.107] => (item=/usr/sbin/chkconfig --level 2345 wildfly on) changed: [192.168.99.107] => (item=systemctl daemon-reload) TASK [isweluiz.wildfly-install : Inicializando wildfly] **************************************** changed: [192.168.99.107] TASK [isweluiz.wildfly-install : Checando porta 8080] ****************************************** ok: [192.168.99.107] TASK [isweluiz.wildfly-install : debug] ******************************************************** ok: [192.168.99.107] => { "msg": { "accept_ranges": "bytes", "changed": false, "connection": "close", "content": "<!DOCTYPE html>\n\n<html>\n<head>\n <!-- proper charset -->\n <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE8\" />\n\n <title>Welcome to WildFly</title>\n <link rel=\"shortcut icon\" href=\"favicon.ico\" type=\"image/x-icon\">\n <link rel=\"StyleSheet\" href=\"wildfly.css\" type=\"text/css\">\n</head>\n\n<body>\n<div class=\"wrapper\">\n <div class=\"content\">\n <div class=\"logo\">\n <img src=\"wildfly_logo.png\" alt=\"WildFly\" border=\"0\" />\n </div>\n <h1>Welcome to WildFly</h1>\n\n <h3>Your WildFly instance is running.</h3>\n\n <p><a href=\"https://docs.wildfly.org\">Documentation</a> | <a href=\"https://github.com/wildfly/quickstart\">Quickstarts</a> | <a href=\"/console\">Administration\n Console</a> </p>\n\n <p><a href=\"https://wildfly.org\">WildFly Project</a> |\n <a href=\"https://community.jboss.org/en/wildfly\">User Forum</a> |\n <a href=\"https://issues.jboss.org/browse/WFLY\">Report an issue</a></p>\n <p class=\"logos\"><a href=\"https://www.jboss.org\"><img src=\"jbosscommunity_logo_hori_white.png\" alt=\"JBoss and JBoss Community\" width=\n \"195\" height=\"37\" border=\"0\"></a></p>\n\n <p class=\"note\">To replace this page simply deploy your own war with / as its context path.<br />\n To disable it, remove the \"welcome-content\" handler for location / in the undertow subsystem.</p>\n </div>\n</div>\n</body>\n</html>\n", "content_length": "1504", "content_type": "text/html", "cookies": {}, "cookies_string": "", "date": "Wed, 09 Dec 2020 19:34:35 GMT", "elapsed": 0, "failed": false, "last_modified": "Thu, 19 Nov 2020 19:38:10 GMT", "msg": "OK (1504 bytes)", "redirected": false, "status": 200, "url": "http://192.168.0.86:8080" } } PLAY RECAP ************************************************************************************* 192.168.99.107 : ok=20 changed=12 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ``` Acesse a url através do IPV4 configurado como default no servidor, no meu caso é : http://192.168.0.86:8080 ![Console Wildfly](https://i.imgur.com/TC5n8jG.png)