From 243120af1343a5dac556cd77b23b769862d2b90d Mon Sep 17 00:00:00 2001 From: lqvan87 Date: Fri, 4 Jun 2021 21:51:52 +0700 Subject: [PATCH 1/3] Update ch4 excersise --- ch4-role/lqvan/ansible.cfg | 3 + .../lqvan/inventory/group_vars/centos.yaml | 0 .../lqvan/inventory/group_vars/ubuntu.yaml | 1 + ch4-role/lqvan/inventory/hosts | 13 ++++ ch4-role/lqvan/roles/apache2/.travis.yml | 29 +++++++++ ch4-role/lqvan/roles/apache2/README.md | 38 ++++++++++++ .../lqvan/roles/apache2/defaults/main.yml | 11 ++++ .../lqvan/roles/apache2/handlers/main.yml | 6 ++ ch4-role/lqvan/roles/apache2/meta/main.yml | 62 +++++++++++++++++++ ch4-role/lqvan/roles/apache2/tasks/main.yml | 18 ++++++ .../roles/apache2/templates/index.html.j2 | 8 +++ ch4-role/lqvan/roles/apache2/tests/inventory | 2 + ch4-role/lqvan/roles/apache2/tests/test.yml | 5 ++ ch4-role/lqvan/roles/apache2/vars/main.yml | 2 + ch4-role/lqvan/site.yml | 19 ++++++ 15 files changed, 217 insertions(+) create mode 100644 ch4-role/lqvan/ansible.cfg create mode 100644 ch4-role/lqvan/inventory/group_vars/centos.yaml create mode 100644 ch4-role/lqvan/inventory/group_vars/ubuntu.yaml create mode 100644 ch4-role/lqvan/inventory/hosts create mode 100644 ch4-role/lqvan/roles/apache2/.travis.yml create mode 100644 ch4-role/lqvan/roles/apache2/README.md create mode 100644 ch4-role/lqvan/roles/apache2/defaults/main.yml create mode 100644 ch4-role/lqvan/roles/apache2/handlers/main.yml create mode 100644 ch4-role/lqvan/roles/apache2/meta/main.yml create mode 100644 ch4-role/lqvan/roles/apache2/tasks/main.yml create mode 100644 ch4-role/lqvan/roles/apache2/templates/index.html.j2 create mode 100644 ch4-role/lqvan/roles/apache2/tests/inventory create mode 100644 ch4-role/lqvan/roles/apache2/tests/test.yml create mode 100644 ch4-role/lqvan/roles/apache2/vars/main.yml create mode 100644 ch4-role/lqvan/site.yml diff --git a/ch4-role/lqvan/ansible.cfg b/ch4-role/lqvan/ansible.cfg new file mode 100644 index 0000000..9119ec0 --- /dev/null +++ b/ch4-role/lqvan/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +host_key_checking = False +inventory = inventory \ No newline at end of file diff --git a/ch4-role/lqvan/inventory/group_vars/centos.yaml b/ch4-role/lqvan/inventory/group_vars/centos.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ch4-role/lqvan/inventory/group_vars/ubuntu.yaml b/ch4-role/lqvan/inventory/group_vars/ubuntu.yaml new file mode 100644 index 0000000..b4a2c4f --- /dev/null +++ b/ch4-role/lqvan/inventory/group_vars/ubuntu.yaml @@ -0,0 +1 @@ +ansible_python_interpreter: /usr/bin/python3 \ No newline at end of file diff --git a/ch4-role/lqvan/inventory/hosts b/ch4-role/lqvan/inventory/hosts new file mode 100644 index 0000000..e02db0e --- /dev/null +++ b/ch4-role/lqvan/inventory/hosts @@ -0,0 +1,13 @@ +[ubuntu] +ubuntu11 ansible_host=192.168.100.11 +ubuntu12 ansible_host=192.168.100.12 + +[centos] +centos21 ansible_host=192.168.100.21 +centos22 ansible_host=192.168.100.22 + + +[linux:children] +ubuntu +centos + diff --git a/ch4-role/lqvan/roles/apache2/.travis.yml b/ch4-role/lqvan/roles/apache2/.travis.yml new file mode 100644 index 0000000..36bbf62 --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/.travis.yml @@ -0,0 +1,29 @@ +--- +language: python +python: "2.7" + +# Use the new container infrastructure +sudo: false + +# Install ansible +addons: + apt: + packages: + - python-pip + +install: + # Install ansible + - pip install ansible + + # Check ansible version + - ansible --version + + # Create ansible.cfg with correct roles_path + - printf '[defaults]\nroles_path=../' >ansible.cfg + +script: + # Basic role syntax check + - ansible-playbook tests/test.yml -i tests/inventory --syntax-check + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ \ No newline at end of file diff --git a/ch4-role/lqvan/roles/apache2/README.md b/ch4-role/lqvan/roles/apache2/README.md new file mode 100644 index 0000000..cd433f4 --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/README.md @@ -0,0 +1,38 @@ +Role Name +========= + +apache2 + +Requirements +------------ + +N/A. + +Role Variables +-------------- + +foo: var for testing + +Dependencies +------------ + +N/A + +Example Playbook +---------------- + +Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: + + - hosts: servers + roles: + - apache2 + +License +------- + +BSD + +Author Information +------------------ + +An optional section for the role authors to include contact information, or a website (HTML is not allowed). diff --git a/ch4-role/lqvan/roles/apache2/defaults/main.yml b/ch4-role/lqvan/roles/apache2/defaults/main.yml new file mode 100644 index 0000000..89d32e5 --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/defaults/main.yml @@ -0,0 +1,11 @@ +--- +# defaults file for apache2 +welcome_user: lqvan +packages: + Debian: + - apache2 + RedHat: + - httpd +services: + Debian: apache2 + RedHat: httpd \ No newline at end of file diff --git a/ch4-role/lqvan/roles/apache2/handlers/main.yml b/ch4-role/lqvan/roles/apache2/handlers/main.yml new file mode 100644 index 0000000..16a5f9e --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/handlers/main.yml @@ -0,0 +1,6 @@ +--- +# handlers file for apache2 +- name: Restart Apache + service: + name: "{{ services[ansible_os_family] }}" + state: restarted \ No newline at end of file diff --git a/ch4-role/lqvan/roles/apache2/meta/main.yml b/ch4-role/lqvan/roles/apache2/meta/main.yml new file mode 100644 index 0000000..b58005b --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/meta/main.yml @@ -0,0 +1,62 @@ +galaxy_info: + author: Van LQ + description: Install Apache 2 + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: "2.9" + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + # platforms: + # - name: Fedora + # versions: + # - all + # - 25 + # - name: SomePlatform + # versions: + # - all + # - 1.0 + # - 7 + # - 99.99 + + platforms: + - name: "EL" + versions: + - "7" + - name: "Ubuntu" + versions: + - "bionic" + + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. + \ No newline at end of file diff --git a/ch4-role/lqvan/roles/apache2/tasks/main.yml b/ch4-role/lqvan/roles/apache2/tasks/main.yml new file mode 100644 index 0000000..8621886 --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/tasks/main.yml @@ -0,0 +1,18 @@ +--- +# tasks file for apache2 +- name: Install Apache + package: + name: "{{ packages[ansible_os_family] }}" + state: latest + +- name: Configuring service + service: + name: "{{ services[ansible_os_family] }}" + state: restarted + enabled: yes + +- name: Copy welcome page + notify: Restart Apache + template: + src: "templates/index.html.j2" + dest: "/var/www/html/index.html" diff --git a/ch4-role/lqvan/roles/apache2/templates/index.html.j2 b/ch4-role/lqvan/roles/apache2/templates/index.html.j2 new file mode 100644 index 0000000..d49df4d --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/templates/index.html.j2 @@ -0,0 +1,8 @@ + + + Hello {{ welcome_user }} ! + + +

Hello! {{ welcome_user }} apache is working!

+ + \ No newline at end of file diff --git a/ch4-role/lqvan/roles/apache2/tests/inventory b/ch4-role/lqvan/roles/apache2/tests/inventory new file mode 100644 index 0000000..878877b --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/tests/inventory @@ -0,0 +1,2 @@ +localhost + diff --git a/ch4-role/lqvan/roles/apache2/tests/test.yml b/ch4-role/lqvan/roles/apache2/tests/test.yml new file mode 100644 index 0000000..716bb73 --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - apache2 \ No newline at end of file diff --git a/ch4-role/lqvan/roles/apache2/vars/main.yml b/ch4-role/lqvan/roles/apache2/vars/main.yml new file mode 100644 index 0000000..d3759da --- /dev/null +++ b/ch4-role/lqvan/roles/apache2/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for apache2 \ No newline at end of file diff --git a/ch4-role/lqvan/site.yml b/ch4-role/lqvan/site.yml new file mode 100644 index 0000000..8a63bb1 --- /dev/null +++ b/ch4-role/lqvan/site.yml @@ -0,0 +1,19 @@ +# site.yml +--- +- name: Setup Apache web server + hosts: all + gather_facts: yes + become: yes + + tasks: + - name: Setup Apache using role + import_role: + name: apache2 + + - name: Check the welcome page + shell: cat /var/www/html/index.html + register: result + + - name: Display welcome page + debug: + msg: "{{ result.stdout }}" From cc24bfe4aa2e9d82f0d9978886ef504a49aa7ee4 Mon Sep 17 00:00:00 2001 From: lqvan87 Date: Sun, 6 Jun 2021 17:22:32 +0700 Subject: [PATCH 2/3] update main.yml in tasks and check the welcome page task --- ch4-role/lqvan/roles/apache2/tasks/main.yml | 5 ++++- ch4-role/lqvan/roles/apache2/templates/index.html.j2 | 2 +- ch4-role/lqvan/site.yml | 11 ++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ch4-role/lqvan/roles/apache2/tasks/main.yml b/ch4-role/lqvan/roles/apache2/tasks/main.yml index 8621886..04c1966 100644 --- a/ch4-role/lqvan/roles/apache2/tasks/main.yml +++ b/ch4-role/lqvan/roles/apache2/tasks/main.yml @@ -12,7 +12,10 @@ enabled: yes - name: Copy welcome page - notify: Restart Apache template: src: "templates/index.html.j2" dest: "/var/www/html/index.html" + notify: Restart Apache + +- name: Force all notified handlers to run at this point, not waiting for normal sync points + meta: flush_handlers diff --git a/ch4-role/lqvan/roles/apache2/templates/index.html.j2 b/ch4-role/lqvan/roles/apache2/templates/index.html.j2 index d49df4d..be2615c 100644 --- a/ch4-role/lqvan/roles/apache2/templates/index.html.j2 +++ b/ch4-role/lqvan/roles/apache2/templates/index.html.j2 @@ -3,6 +3,6 @@ Hello {{ welcome_user }} ! -

Hello! {{ welcome_user }} apache is working!

+

Hello {{ welcome_user }} apache is working!

\ No newline at end of file diff --git a/ch4-role/lqvan/site.yml b/ch4-role/lqvan/site.yml index 8a63bb1..aa31871 100644 --- a/ch4-role/lqvan/site.yml +++ b/ch4-role/lqvan/site.yml @@ -6,14 +6,19 @@ become: yes tasks: + - meta: flush_handlers - name: Setup Apache using role import_role: name: apache2 - name: Check the welcome page - shell: cat /var/www/html/index.html + uri: + method: GET + return_content: yes + status_code: 200 + url: "http://{{ inventory_hostname }}" register: result - + - name: Display welcome page debug: - msg: "{{ result.stdout }}" + msg: "{{ result.content }}" From 3a810af34d42c648a5269f03cec07aaf11eabd0a Mon Sep 17 00:00:00 2001 From: lqvan87 Date: Sun, 6 Jun 2021 17:27:15 +0700 Subject: [PATCH 3/3] removed meta flush_handlers --- ch4-role/lqvan/site.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ch4-role/lqvan/site.yml b/ch4-role/lqvan/site.yml index aa31871..cab3dd8 100644 --- a/ch4-role/lqvan/site.yml +++ b/ch4-role/lqvan/site.yml @@ -6,7 +6,6 @@ become: yes tasks: - - meta: flush_handlers - name: Setup Apache using role import_role: name: apache2