Tutorial: Configuración de aplicaciones en App de Azure Service mediante Ansible
Importante
Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.7 (o cualquier versión posterior).
Azure App Service permite compilar y hospedar código. Dicho código puede tener forma de aplicaciones web, back-ends para dispositivos móviles y API RESTful. Mediante App Service, puede desarrollar el código mediante el lenguaje de programación que prefiera sin tener que administrar la infraestructura. App Service admite Windows y Linux. Se admiten las implementaciones automatizadas desde cualquier repositorio Git, como GitHub y Azure DevOps.
En este artículo aprenderá a:
- Crear una aplicación en Azure App Service con Java 8 y el contenedor de Tomcat en tiempo de ejecución
- Crear un perfil de Azure Traffic Manager
- Definir un punto de conexión de Traffic Manager con la aplicación creada
Requisitos previos
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Instalación de Ansible: realice una de las siguientes opciones:
- Instalar y configurar Ansible en una máquina virtual Linux
- Configurar Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, crear una máquina virtual con Ansible.
Creación de un servicio de aplicación básico
El código del cuaderno de estrategias de esta sección define los siguientes recursos:
- Grupo de recursos de Azure dentro del cual se implementan la aplicación y el plan de App Service
- Un servicio de aplicación en Linux con Java 8 y el contenedor de Tomcat en tiempo de ejecución
Guarde el siguiente cuaderno de estrategias como firstwebapp.yml
:
- hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
webapp_name: myfirstWebApp
plan_name: myAppServicePlan
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create App Service on Linux with Java Runtime
azure_rm_webapp:
resource_group: "{{ resource_group }}"
name: "{{ webapp_name }}"
plan:
resource_group: "{{ resource_group }}"
name: "{{ plan_name }}"
is_linux: true
sku: S1
number_of_workers: 1
frameworks:
- name: "java"
version: "8"
settings:
java_container: tomcat
java_container_version: 8.5
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook firstwebapp.yml
Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Create a resource group]
changed: [localhost]
TASK [Create App Service on Linux with Java Runtime]
[WARNING]: Azure API profile latest does not define an entry for WebSiteManagementClient
changed: [localhost]
PLAY RECAP
localhost : ok=3 changed=2 unreachable=0 failed=0
Creación de una aplicación y uso de Azure Traffic Manager
Azure Traffic Manager permite controlar la manera en que se distribuyen solicitudes de clientes web a aplicaciones en Azure App Service. Cuando se agregan puntos de conexión de App Service a un perfil de Azure Traffic Manager, este realiza un seguimiento del estado de las aplicaciones de App Service. Los estados incluyen en ejecución, detenido y eliminado. Traffic Manager se usa para decidir qué puntos de conexión deben recibir el tráfico.
En App Service, cada aplicación se ejecuta en un plan de App Service. Un plan de App Service define un conjunto de recursos de proceso para que una aplicación se ejecute. Puede administrar el plan de App Service y la aplicación web en grupos distintos.
El código del cuaderno de estrategias de esta sección define los siguientes recursos:
- Grupo de recursos de Azure dentro del cual se implementa el plan de App Service
- Plan de App Service
- Grupo de recursos de Azure dentro del cual se implementa la aplicación
- Un servicio de aplicación en Linux con Java 8 y el contenedor de Tomcat en tiempo de ejecución
- Perfil de Traffic Manager
- Punto de conexión de Traffic Manager con la aplicación creada
Guarde el siguiente cuaderno de estrategias como webapp.yml
:
- hosts: localhost
connection: local
vars:
resource_group_webapp: myResourceGroupWebapp
resource_group: myResourceGroup
webapp_name: myLinuxWebApp
plan_name: myAppServicePlan
location: eastus
traffic_manager_profile_name: myTrafficManagerProfile
traffic_manager_endpoint_name: myTrafficManagerEndpoint
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: "{{ resource_group_webapp }}"
location: "{{ location }}"
- name: Create secondary resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create App Service Plan
azure_rm_appserviceplan:
resource_group: "{{ resource_group }}"
name: "{{ plan_name }}"
location: "{{ location }}"
is_linux: true
sku: S1
number_of_workers: 1
- name: Create App Service on Linux with Java Runtime
azure_rm_webapp:
resource_group: "{{ resource_group_webapp }}"
name: "{{ webapp_name }}"
plan:
resource_group: "{{ resource_group }}"
name: "{{ plan_name }}"
is_linux: true
sku: S1
number_of_workers: 1
app_settings:
testkey: "testvalue"
frameworks:
- name: java
version: 8
settings:
java_container: "Tomcat"
java_container_version: "8.5"
- name: Get web app facts
azure_rm_webapp_facts:
resource_group: "{{ resource_group_webapp }}"
name: "{{ webapp_name }}"
register: webapp
- name: Create Traffic Manager Profile
azure_rm_trafficmanagerprofile:
resource_group: "{{ resource_group_webapp }}"
name: "{{ traffic_manager_profile_name }}"
location: global
routing_method: performance
dns_config:
relative_name: "{{ traffic_manager_profile_name }}"
ttl: 60
monitor_config:
protocol: HTTPS
port: 80
path: '/'
- name: Add endpoint to traffic manager profile, using created web site
azure_rm_trafficmanagerendpoint:
resource_group: "{{ resource_group_webapp }}"
profile_name: "{{ traffic_manager_profile_name }}"
name: "{{ traffic_manager_endpoint_name }}"
type: azure_endpoints
location: "{{ location }}"
target_resource_id: "{{ webapp.webapps[0].id }}"
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook webapp.yml
Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Create resource group]
changed: [localhost]
TASK [Create resource group for app service plan]
changed: [localhost]
TASK [Create App Service Plan]
[WARNING]: Azure API profile latest does not define an entry for WebSiteManagementClient
changed: [localhost]
TASK [Create App Service on Linux with Java Runtime]
changed: [localhost]
TASK [Get web app facts]
ok: [localhost]
TASK [Create Traffic Manager Profile]
[WARNING]: Azure API profile latest does not define an entry for TrafficManagerManagementClient
changed: [localhost]
TASK [Add endpoint to traffic manager profile, using the web site created above]
changed: [localhost]
TASK [Get Traffic Manager Profile facts]
ok: [localhost]
PLAY RECAP
localhost : ok=9 changed=6 unreachable=0 failed=0
Pasos siguientes
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de