Compare commits

7 Commits
main ... awx

12 changed files with 105 additions and 242 deletions

10
Vagrantfile vendored
View File

@@ -5,11 +5,15 @@ Vagrant.configure(2) do |config|
ansible.vm.network "private_network", ip: "192.168.11.10" # IP privada ansible.vm.network "private_network", ip: "192.168.11.10" # IP privada
ansible.vm.hostname = "ansible" # Nombre de host ansible.vm.hostname = "ansible" # Nombre de host
ansible.vm.synced_folder ".", "/home/vagrant/sync", type: "rsync" # Carpeta sincronizada ansible.vm.synced_folder ".", "/home/vagrant/sync", type: "rsync" # Carpeta sincronizada
ansible.vm.network "forwarded_port", guest: 32000, host: 32000
# No es necesario provisionar Ansible aquí, ya que si AWX está instalado, ya incluye Ansible
# Está incluido un script de aprovisionamiento básicamente para tener solo un Vagrantfile
# para todo el entorno Ansible y que instale dependencias adicionales si se requieren.
#ansible.vm.provision :shell, :path => "ansible.sh" # Script de aprovisionamiento
ansible.vm.provider "virtualbox" do |vb| ansible.vm.provider "virtualbox" do |vb|
vb.memory = 512 # Memoria RAM asignada vb.memory = 4096 # Memoria RAM asignada para tener AWX funcionando
vb.cpus = 1 # Número de CPUs asignadas vb.cpus = 2 # Número de CPUs asignadas
end end
ansible.vm.provision :shell, :path => "ansible.sh" # Script de aprovisionamiento
end end
# Máquina para la base de datos # Máquina para la base de datos

97
ansible_awx_install.txt Normal file
View File

@@ -0,0 +1,97 @@
== 1. Update Your System ==
sudo apt update
sudo apt upgrade -y
== 2. Install k3s ==
curl -sfL https://get.k3s.io | sh -
== 3. Give Non-root User Access to K3s Config ==
sudo chown $USER:$USER /etc/rancher/k3s/k3s.yaml
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
== 4. Verify Kubernetes Cluster ==
kubectl version
kubectl get nodes
kubectl get pods -A
== 5. Install Kustomize ==
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
sudo mv kustomize /usr/local/bin
== 6. Create Kustomization Directory ==
mkdir awx-deploy && cd awx-deploy
== 7. Create kustomization.yaml ==
#create file
nano kustomization.yaml
#Add below to the file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- github.com/ansible/awx-operator/config/default?ref=2.19.1
images:
- name: quay.io/ansible/awx-operator
newTag: 2.19.1
namespace: awx
== 8. Apply Kustomize Configuration ==
kubectl apply -k .
OR
kustomize build . | kubectl apply -f -
== 9. Verify Operator is Running ==
kubectl get pods -n awx
== 10. Create AWX Instance. Create a file named awx-demo.yaml ==
#create file
nano awx-demo.yaml
#Add below to the file
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
spec:
service_type: nodeport
nodeport_port: 32000
== 11. Add Instance to Kustomization ==
# Update your kustomization.yaml to include awx-demo.yaml
#edit file
nano kustomization.yaml
#add - awx-demo.yaml under resources
resources:
- github.com/ansible/awx-operator/config/default?ref=2.19.1
- awx-demo.yaml
images:
- name: quay.io/ansible/awx-operator
newTag: 2.19.1
namespace: awx
== 12. Reapply Kustomize Configuration ==
kubectl apply -k .
== 13. Check POD Status
kubectl get pods -n awx
== 14. View Logs ==
kubectl logs -f deployment/awx-operator-controller-manager -c awx-manager -n awx
== 15. Retrieve Admin Password ==
kubectl get secret awx-demo-admin-password -n awx -o jsonpath="{.data.password}" | base64 --decode ; echo
== 16. Access the AWX Dashboard ==
http://<your-server-ip>:32000
#Username: admin
#Password: (from previous step)

View File

@@ -1,4 +0,0 @@
# import_playbook soporta handlers correctamente.
# Por lo tanto, este playbook importa otros playbooks que contienen handlers.
- import_playbook: site.yml
- import_playbook: stack_status.yml

View File

@@ -1,27 +0,0 @@
---
- hosts: loadbalancer
become: true
tasks:
- name: verify nginx service
command: service nginx status
- name: verify nginx is listening on 80
wait_for: port=80 timeout=3
- hosts: webserver
become: true
tasks:
- name: verify apache2 service
command: service apache2 status
- name: verify apache2 is listening on 80
wait_for: port=80 timeout=3
- hosts: database
become: true
tasks:
- name: verify mysql service
command: service mysql status
- name: verify mysql is listening on 3306
wait_for: port=3306 timeout=3

View File

@@ -17,13 +17,8 @@ loadbalancer:
ansible_ssh_password: vagrant ansible_ssh_password: vagrant
webserver: webserver:
hosts: hosts:
ws_01: db_01:
ansible_host: 192.168.11.40 ansible_host: 192.168.11.40
ansible_connection: ssh ansible_connection: ssh
ansible_user: vagrant ansible_user: vagrant
ansible_ssh_password: vagrant
ws_02:
ansible_host: 192.168.11.50
ansible_connection: ssh
ansible_user: vagrant
ansible_ssh_password: vagrant ansible_ssh_password: vagrant

View File

@@ -1,24 +0,0 @@
- name: test para autenticar en máquina con certificado
hosts: all
become: yes
vars:
domain_name: "example.com"
cert_path: "/etc/ssl/certs/example.com.crt"
key_path: "/etc/ssl/private/example.com.key"
tasks:
- name: Asegurarse que existe la clave dominio
community.crypto.openssl_privatekey:
path: "{{ key_path }}"
size: 2048
state: present
- name: Obtener certificado via ACME (Let's Encrypt)
community.crypto.acme_certificate:
account_key_src: "/etc/ssl/private/account.key"
csr:
common_name: "{{ domain_name }}"
fullchain_dest: "{{ cert_path }}"
privatekey_dest: "{{ key_path }}"
provider: letsencrypt
terms_agreed: true
state: present

View File

@@ -1,74 +0,0 @@
# Preparación del Windows Agent para Ansible
**Descripción**: Este fichero contiene los comandos necesarios para preparar un host Windows para ser gestionado por Ansible usando WinRM (HTTP no cifrado / Autenticación Basic).
**Requisitos previos en el agent Windows**:
- Windows con PowerShell ejecutándose como administrador.
- Conexión de red que permita acceso al puerto `5985` (WinRM HTTP) des del agente de Ansible.
**Pasos**:
1. **Cambiar red a privada**: En la configuración de Red de Windows, establecer el perfil de red de "Pública" a "Privada".
2. **Habilitar WinRM**: Ejecutar en PowerShell elevado a nivel administrador:
```powershell
winrm quickconfig -force
```
3. **Permitir autenticación Basic** (necesario si usarás credenciales básicas):
```powershell
Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
```
4. **Permitir tráfico no cifrado** (si no usas HTTPS/WinRM cifrado):
```powershell
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
```
5. **Abrir puerto WinRM en el firewall**:
```powershell
New-NetFirewallRule -Name "WinRM HTTP" -DisplayName "WinRM HTTP" -Enabled True -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow
```
**Notas de seguridad**:
- Habilitar `AllowUnencrypted` y `Basic` significa que las credenciales viajan en claro si no usas túnel/capa adicional. Evítalo en entornos de producción.
- Para un entorno más seguro, configura WinRM sobre HTTPS (puerto 5986) y usa certificados, o usa un túnel VPN/SSH para proteger el tráfico.
- Asegúrate de limitar el acceso al puerto `5985` mediante reglas de firewall o controles de red (IP whitelist).
**Comprobación**:
- Desde el controlador Ansible (Linux/macOS), prueba conectividad con `winrm` usando un módulo o una tarea `ping` de Ansible, o bien con `Test-NetConnection` desde otro host Windows:
```powershell
Test-NetConnection -ComputerName <IP-o-hostname> -Port 5985
```
**Deshacer/Restaurar**:
- Para deshabilitar Basic auth:
```powershell
Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $false
```
- Para volver a bloquear tráfico no cifrado:
```powershell
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $false
```
- Para eliminar la regla de firewall creada:
```powershell
Remove-NetFirewallRule -Name "WinRM HTTP"
```
**Comandos antiguos del tirón**
```powershell
Preparación del Windows Agent para Ansible:
1) Poner el Windows de Red Publica a Privada (En configuración de Red)
2) winrm quickconfig -force
3) Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
4) Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
5) New-NetFirewallRule -Name "WinRM HTTP" -DisplayName "WinRM HTTP" -Enabled True -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow
```

View File

@@ -1,9 +0,0 @@
[windows]
win101 ansible_host=192.168.1.175
[windows:vars]
ansible_user=AnsibleNode
ansible_password=ansible
ansible_port=5985
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

View File

@@ -1,9 +0,0 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris egestas interdum sapien, ut interdum enim auctor at. Nam justo nisi, mattis iaculis hendrerit eget, dignissim eget erat. Pellentesque ac cursus ipsum, non lobortis eros. Nam interdum metus in feugiat consequat. Nunc dictum arcu at purus luctus bibendum. Nulla facilisi. Quisque fringilla, odio in elementum imperdiet, magna nulla malesuada libero, et tempor orci lacus et nisi. In eu ex id est posuere tristique ut at eros. Mauris in ante a nisi malesuada sagittis suscipit non metus.
Duis dignissim turpis ac ante pharetra, sit amet tempus massa mollis. Proin eros quam, efficitur nec semper at, condimentum id dui. Proin mattis arcu nibh, ut tristique risus tempor sed. Duis id est mattis, tristique enim non, feugiat nulla. In sollicitudin lacinia libero, quis vestibulum nulla tempor non. Mauris vitae quam neque. Cras dui felis, ullamcorper vitae ante semper, aliquam suscipit orci. Sed et ipsum purus. In eleifend arcu non diam scelerisque convallis. Ut rutrum felis et cursus viverra. Ut in ligula fermentum, tincidunt diam eget, dapibus leo. Proin purus nulla, tempus eu nulla vel, blandit consectetur tortor. Pellentesque pretium diam semper, maximus elit sit amet, egestas tortor. Ut vel condimentum sem. Suspendisse potenti. Sed augue neque, volutpat a feugiat eu, feugiat ut leo.
Etiam tincidunt lectus ipsum, sed cursus eros elementum id. Aenean pellentesque finibus odio nec viverra. In efficitur erat nec varius semper. Vestibulum tortor orci, tempor quis pretium quis, rutrum et dolor. Ut ut ornare purus, sed accumsan est. Vivamus commodo, neque vitae venenatis lacinia, nisi libero viverra orci, vel ornare lectus urna quis nunc. Vestibulum sapien mauris, pellentesque at luctus quis, posuere a massa. Integer in enim id erat scelerisque venenatis. Sed odio diam, ullamcorper at urna a, accumsan laoreet nisi. Proin dictum dui augue, et ornare justo egestas sit amet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras tempus accumsan massa, eu imperdiet eros faucibus fermentum. Sed auctor mauris imperdiet bibendum congue. Curabitur sollicitudin tincidunt sapien vel cursus. Suspendisse vitae interdum mauris.
Proin eros eros, cursus quis vestibulum vulputate, malesuada vitae urna. Aliquam ullamcorper, sem quis pellentesque interdum, ipsum ligula posuere turpis, volutpat ornare est massa quis purus. Nulla a posuere risus. Nunc at turpis vel dui varius sollicitudin ac quis nisl. Vivamus id sodales sapien. Nullam turpis leo, suscipit in mi nec, faucibus consectetur erat. Praesent orci risus, sagittis a mollis in, consequat ac nisi. Nulla ac tellus id massa feugiat condimentum. Nullam auctor ipsum sollicitudin cursus vulputate. Donec at nibh non sem consectetur consectetur ac at ipsum. Cras viverra placerat consectetur. Suspendisse potenti. Donec tempor vel eros quis efficitur.
Nam feugiat a mi vitae bibendum. Nam rhoncus, turpis ut tristique sodales, nibh risus fermentum erat, non iaculis libero nunc a dolor. Nullam porta nibh sed ligula porta imperdiet ac et augue. Integer consectetur purus at nisi efficitur, nec sodales massa pellentesque. Sed vehicula viverra lacus, ut interdum eros condimentum vel. Nullam feugiat nibh vitae rhoncus volutpat. Nullam risus dui, auctor sit amet sem sit amet, rhoncus lacinia sem. In scelerisque bibendum arcu, ut feugiat libero condimentum accumsan. Nunc porttitor felis at arcu convallis, et aliquet ipsum fermentum. Vestibulum fringilla est enim, a tincidunt enim mollis vitae. Praesent sodales, enim eget bibendum mollis, ligula sapien pretium ex, et suscipit magna nisi nec purus. Vivamus odio nibh, malesuada et efficitur vitae, sagittis sed tellus.

View File

@@ -1,53 +0,0 @@
---
- name: Instalar fastfetch en las VMs del curso
hosts: all
become: true
gather_facts: true
tasks:
- name: Actualizar la caché de paquetes
apt:
update_cache: yes
cache_valid_time: 3600
- name: Instalar dependencias necesarias
apt:
name:
- git
- cmake
- build-essential
- pkg-config
- libgl1-mesa-dev
- libwayland-dev
- libx11-dev
state: present
- name: Clonar repositorio oficial de fastfetch
git:
repo: "https://github.com/fastfetch-cli/fastfetch.git"
dest: "/tmp/fastfetch"
version: master
force: yes
- name: Crear directorio build
file:
path: "/tmp/fastfetch/build"
state: directory
- name: Ejecutar cmake
command: cmake .. chdir=/tmp/fastfetch/build
- name: Compilar
command: make -j"{{ ansible_processor_vcpus | default(2) }}" chdir=/tmp/fastfetch/build
- name: Instalar
command: make install chdir=/tmp/fastfetch/build
- name: Verificar instalación
command: fastfetch --version
register: ff_version
- name: Mostrar versión instalada
debug:
var: ff_version.stdout

View File

@@ -1,13 +0,0 @@
---
- name: Prueba de conexión a Windows
hosts: windows
tasks:
- name: Borrar fichero escritorioSegundo en Windows
ansible.windows.win_file:
path: C:\Users\AnsibleNode\Desktop\escritorioSegundo.txt
state: absent
- name: Borrar fichero escritorio en Windows
ansible.windows.win_file:
path: C:\Users\AnsibleNode\Desktop\escritorio.txt
state: absent

View File

@@ -1,20 +0,0 @@
---
- name: Prueba de conexión a Windows
hosts: windows
tasks:
- name: Hacer ping a máquina
ansible.windows.win_ping:
- name: run the setup facts
ansible.windows.setup:
- name: Copy a single file
ansible.windows.win_copy:
src: prueba.txt
dest: C:\Users\AnsibleNode\Desktop\escritorio.txt
- name: Copy a single file where the source is on the remote host
ansible.windows.win_copy:
src: C:\Users\AnsibleNode\Desktop\escritorio.txt
dest: C:\Users\AnsibleNode\Desktop\escritorioSegundo.txt
remote_src: true