From 8f477950d82961bc6db49ac30db3fe053a4049e2 Mon Sep 17 00:00:00 2001 From: Guillem Hernandez Sola Date: Tue, 12 May 2026 18:38:47 +0200 Subject: [PATCH] Petit stack --- examples/016_tasks_handlers/hosts | 11 ++++++ examples/016_tasks_handlers/loadbalancer.yml | 4 +- .../016_tasks_handlers/playbooks/hostname.yml | 8 +++- .../playbooks/stack_status.yml | 16 ++++---- .../roles/apache2/handlers/main.yml | 2 + .../roles/apache2/tasks/main.yml | 35 +++++++++++++++++ .../roles/control/tasks/main.yml | 4 +- examples/016_tasks_handlers/site.yml | 10 +++++ examples/016_tasks_handlers/webserver.yml | 39 +------------------ 9 files changed, 79 insertions(+), 50 deletions(-) create mode 100644 examples/016_tasks_handlers/hosts create mode 100644 examples/016_tasks_handlers/site.yml diff --git a/examples/016_tasks_handlers/hosts b/examples/016_tasks_handlers/hosts new file mode 100644 index 0000000..4c93a54 --- /dev/null +++ b/examples/016_tasks_handlers/hosts @@ -0,0 +1,11 @@ +[control] +192.168.11.10 + +[database] +192.168.11.20 + +[loadbalancer] +192.168.11.30 + +[webserver] +192.168.11.40 \ No newline at end of file diff --git a/examples/016_tasks_handlers/loadbalancer.yml b/examples/016_tasks_handlers/loadbalancer.yml index 8063643..4e24ec8 100644 --- a/examples/016_tasks_handlers/loadbalancer.yml +++ b/examples/016_tasks_handlers/loadbalancer.yml @@ -4,8 +4,8 @@ tasks: - name: install tools apt: name={{item}} state=present update_cache=yes - with_items: - - python-httplib2 + loop: + - python3-httplib2 - name: install nginx apt: name=nginx state=present update_cache=yes diff --git a/examples/016_tasks_handlers/playbooks/hostname.yml b/examples/016_tasks_handlers/playbooks/hostname.yml index a1a3ad6..677ca96 100644 --- a/examples/016_tasks_handlers/playbooks/hostname.yml +++ b/examples/016_tasks_handlers/playbooks/hostname.yml @@ -1,5 +1,11 @@ --- - hosts: all tasks: - - name: get server hostname + - name: Ping to servers + ping: + - name: Get hostname command: hostname + register: hostname + - name: Show hostname with message + debug: + msg: "The hostname of this server is {{ hostname.stdout }}" diff --git a/examples/016_tasks_handlers/playbooks/stack_status.yml b/examples/016_tasks_handlers/playbooks/stack_status.yml index 0676295..365f18e 100644 --- a/examples/016_tasks_handlers/playbooks/stack_status.yml +++ b/examples/016_tasks_handlers/playbooks/stack_status.yml @@ -30,38 +30,38 @@ tasks: - name: verify end-to-end index response uri: url=http://{{item}} return_content=yes - with_items: groups.loadbalancer + loop: groups.loadbalancer register: lb_index - fail: msg="index failed to return content" when: "'Hello, from sunny' not in item.content" - with_items: "{{lb_index.results}}" + loop: "{{lb_index.results}}" - name: verify end-to-end db response uri: url=http://{{item}}/db return_content=yes - with_items: groups.loadbalancer + loop: groups.loadbalancer register: lb_db - fail: msg="db failed to return content" when: "'Database Connected from' not in item.content" - with_items: "{{lb_db.results}}" + loop: "{{lb_db.results}}" - hosts: loadbalancer tasks: - name: verify backend index response uri: url=http://{{item}} return_content=yes - with_items: groups.webserver + loop: groups.webserver register: app_index - fail: msg="index failed to return content" when: "'Hello, from sunny {{item.item}}!' not in item.content" - with_items: "{{app_index.results}}" + loop: "{{app_index.results}}" - name: verify backend db response uri: url=http://{{item}}/db return_content=yes - with_items: groups.webserver + loop: groups.webserver register: app_db - fail: msg="db failed to return content" when: "'Database Connected from {{item.item}}!' not in item.content" - with_items: "{{app_db.results}}" + loop: "{{app_db.results}}" diff --git a/examples/016_tasks_handlers/roles/apache2/handlers/main.yml b/examples/016_tasks_handlers/roles/apache2/handlers/main.yml index 76add52..adfad8b 100644 --- a/examples/016_tasks_handlers/roles/apache2/handlers/main.yml +++ b/examples/016_tasks_handlers/roles/apache2/handlers/main.yml @@ -1,2 +1,4 @@ --- # handlers file for apache2 +- name: restart apache2 + service: name=apache2 state=restarted \ No newline at end of file diff --git a/examples/016_tasks_handlers/roles/apache2/tasks/main.yml b/examples/016_tasks_handlers/roles/apache2/tasks/main.yml index 2e2af7a..872ff31 100644 --- a/examples/016_tasks_handlers/roles/apache2/tasks/main.yml +++ b/examples/016_tasks_handlers/roles/apache2/tasks/main.yml @@ -1,2 +1,37 @@ --- # tasks file for apache2 +- name: install web components + apt: name={{item}} state=present update_cache=yes + loop: + - apache2 + - libapache2-mod-wsgi + - python3-pip + - python3-virtualenv + - python3-mysqldb + +- name: ensure apache2 started + service: name=apache2 state=started enabled=yes + +- name: ensure mod_wsgi enabled + apache2_module: state=present name=wsgi + notify: restart apache2 + +- name: copy demo app source + copy: src=demo/app/ dest=/var/www/demo mode=0755 + notify: restart apache2 + +- name: copy apache virtual host config + copy: src=demo/demo.conf dest=/etc/apache2/sites-available mode=0755 + notify: restart apache2 + +- name: setup python virtualenv + pip: requirements=/var/www/demo/requirements.txt virtualenv=/var/www/demo/.venv + notify: restart apache2 + +- name: de-activate default apache site + file: path=/etc/apache2/sites-enabled/000-default.conf state=absent + notify: restart apache2 + +- name: activate demo apache site + file: src=/etc/apache2/sites-available/demo.conf dest=/etc/apache2/sites-enabled/demo.conf state=link + notify: restart apache2 \ No newline at end of file diff --git a/examples/016_tasks_handlers/roles/control/tasks/main.yml b/examples/016_tasks_handlers/roles/control/tasks/main.yml index 330e91c..bed9690 100644 --- a/examples/016_tasks_handlers/roles/control/tasks/main.yml +++ b/examples/016_tasks_handlers/roles/control/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: install tools apt: name={{item}} state=present update_cache=yes - with_items: + loop: - curl - - python-httplib2 + - python3-httplib2 diff --git a/examples/016_tasks_handlers/site.yml b/examples/016_tasks_handlers/site.yml new file mode 100644 index 0000000..42b84a2 --- /dev/null +++ b/examples/016_tasks_handlers/site.yml @@ -0,0 +1,10 @@ +--- +- import_playbook: playbooks/hostname.yml +- import_playbook: database.yml +- import_playbook: webserver.yml +- import_playbook: loadbalancer.yml +- import_playbook: control.yml +- import_playbook: playbooks/stack_status.yml +- import_playbook: playbooks/stack_restart.yml +- import_playbook: playbooks/stack_status.yml + diff --git a/examples/016_tasks_handlers/webserver.yml b/examples/016_tasks_handlers/webserver.yml index 1417614..880faa4 100644 --- a/examples/016_tasks_handlers/webserver.yml +++ b/examples/016_tasks_handlers/webserver.yml @@ -1,43 +1,8 @@ --- - hosts: webserver become: true - tasks: - - name: install web components - apt: name={{item}} state=present update_cache=yes - with_items: - - apache2 - - libapache2-mod-wsgi - - python-pip - - python-virtualenv - - python-mysqldb + roles: + - apache2 - - name: ensure apache2 started - service: name=apache2 state=started enabled=yes - - name: ensure mod_wsgi enabled - apache2_module: state=present name=wsgi - notify: restart apache2 - - name: copy demo app source - copy: src=demo/app/ dest=/var/www/demo mode=0755 - notify: restart apache2 - - - name: copy apache virtual host config - copy: src=demo/demo.conf dest=/etc/apache2/sites-available mode=0755 - notify: restart apache2 - - - name: setup python virtualenv - pip: requirements=/var/www/demo/requirements.txt virtualenv=/var/www/demo/.venv - notify: restart apache2 - - - name: de-activate default apache site - file: path=/etc/apache2/sites-enabled/000-default.conf state=absent - notify: restart apache2 - - - name: activate demo apache site - file: src=/etc/apache2/sites-available/demo.conf dest=/etc/apache2/sites-enabled/demo.conf state=link - notify: restart apache2 - - handlers: - - name: restart apache2 - service: name=apache2 state=restarted