From 20fe207a53ce04d6443c75641b29b9230ef74378 Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 01:21:19 -0400 Subject: [PATCH 01/11] Update iiab-install --- iiab-install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iiab-install b/iiab-install index 221b8e5a6..04c42b06a 100755 --- a/iiab-install +++ b/iiab-install @@ -10,7 +10,7 @@ CWD=`pwd` OS=`grep ^ID= /etc/*release|cut -d= -f2` OS=${OS//\"/} MIN_RPI_KERN=4.9.59-v7+ -MIN_ANSIBLE_VER=2.6.6 +MIN_ANSIBLE_VER=2.6.7 if [ ! -f /etc/iiab/local_vars.yml ]; then From 0bf8c2ff43e87caa25af8e08d08e86d96162ee6a Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 10:48:08 -0400 Subject: [PATCH 02/11] Update main.yml --- roles/kiwix/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/kiwix/defaults/main.yml b/roles/kiwix/defaults/main.yml index 07d053489..9c60cc995 100644 --- a/roles/kiwix/defaults/main.yml +++ b/roles/kiwix/defaults/main.yml @@ -1,9 +1,9 @@ # Which kiwix-tools to download from http://download.iiab.io/packages/ # As obtained from http://download.kiwix.org/release/kiwix-tools/ or http://download.kiwix.org/nightly/ -kiwix_version_armhf: "kiwix-tools_linux-armhf-0.6.1-1" -kiwix_version_linux64: "kiwix-tools_linux-x86_64-0.6.1-1" -kiwix_version_i686: "kiwix-tools_linux-i586-0.6.1-1" +kiwix_version_armhf: "kiwix-tools_linux-armhf-0.7.0" +kiwix_version_linux64: "kiwix-tools_linux-x86_64-0.7.0" +kiwix_version_i686: "kiwix-tools_linux-i586-0.7.0" # kiwix_src_file_i686: "kiwix-linux-i686.tar.bz2" # v0.9 for i686 published May 2014 ("use it to test legacy ZIM content") # v0.10 for i686 published Oct 2016 ("experimental") REPLACED IN EARLY 2018, thx to Matthieu Gautier: From f2d0f1ffa6b47eeae70f504696b1d4a270cd601a Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 16:12:28 -0400 Subject: [PATCH 03/11] Update install.yml --- roles/dokuwiki/tasks/install.yml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/roles/dokuwiki/tasks/install.yml b/roles/dokuwiki/tasks/install.yml index 6bfadbc56..a1c3cfa30 100644 --- a/roles/dokuwiki/tasks/install.yml +++ b/roles/dokuwiki/tasks/install.yml @@ -1,47 +1,46 @@ -- name: Download DokuWiki software +- name: Download {{ iiab_download_url }}/{{ dokuwiki_version }}.tgz # iiab_download_url is http://download.iiab.io/packages get_url: url: "{{ iiab_download_url }}/{{ dokuwiki_version }}.tgz" dest: "{{ downloads_dir }}/" timeout: "{{ download_timeout }}" when: internet_available -- name: Copy it to permanent location /library +- name: Unarchive (unpack) it to /library/{{ dokuwiki_version }} unarchive: src: "{{ downloads_dir }}/{{ dokuwiki_version }}.tgz" dest: /library creates: "/library/{{ dokuwiki_version }}/VERSION" -- name: Symlink /library/{{ dokuwiki_version }} from /library/dokuwiki +- name: Symlink /library/dokuwiki to /library/{{ dokuwiki_version }} #shell: if [ ! -d /library/dokuwiki ]; then ln -sf /library/{{ dokuwiki_version }} /library/dokuwiki; fi #shell: ln -sf /library/{{ dokuwiki_version }} /library/dokuwiki #BOTH LINES ABOVE FAIL TO UPDATE LINK; Ansible approach below works file: - path: /library/dokuwiki src: /library/{{ dokuwiki_version }} + path: /library/dokuwiki state: link force: yes -- name: Install config file for DokuWiki in Apache +- name: Install /etc/{{ apache_config_dir }}/dokuwiki.conf from template, for DokuWiki's http://box/wiki template: src: dokuwiki.conf.j2 dest: "/etc/{{ apache_config_dir }}/dokuwiki.conf" when: dokuwiki_enabled -- name: Enable the DokuWiki (debuntu) +- name: Symlink /etc/apache2/sites-enabled/dokuwiki.conf to /etc/apache2/sites-available/dokuwiki.conf if dokuwiki_enabled (debuntu) file: src: /etc/apache2/sites-available/dokuwiki.conf - dest: /etc/apache2/sites-enabled/dokuwiki.conf + path: /etc/apache2/sites-enabled/dokuwiki.conf state: link when: dokuwiki_enabled and is_debuntu -- name: Disable the DokuWiki (debuntu) +- name: Remove symlink /etc/apache2/sites-enabled/dokuwiki.conf if not dokuwiki_enabled (debuntu) file: path: /etc/apache2/sites-enabled/dokuwiki.conf state: absent when: not dokuwiki_enabled and is_debuntu - -- name: Change permissions on engine directory so Apache can write +- name: Set /library/{{ dokuwiki_version }} owner to {{ apache_user }} and permissions to 0755 (recursively) file: path: "/library/{{ dokuwiki_version }}" owner: "{{ apache_user }}" @@ -49,7 +48,7 @@ state: directory recurse: yes -- name: Restart Apache, so it picks up the new aliases - service: +- name: Restart Apache ({{ apache_service }}) to enable/disable DokuWiki's http://box/wiki + systemd: name: "{{ apache_service }}" state: restarted From 5aa4e20119a6273ff9648613987fa2beef7df2c9 Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 18:02:44 -0400 Subject: [PATCH 04/11] Update iiab_ini.yml --- roles/0-init/tasks/iiab_ini.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/0-init/tasks/iiab_ini.yml b/roles/0-init/tasks/iiab_ini.yml index dcd7b06a3..346eab369 100644 --- a/roles/0-init/tasks/iiab_ini.yml +++ b/roles/0-init/tasks/iiab_ini.yml @@ -1,12 +1,12 @@ # workaround for fact that auto create does not work on iiab_ini_file (/etc/iiab/iiab.ini) - name: Create {{ iiab_ini_file }} file: - dest: "{{ iiab_ini_file }}" + path: "{{ iiab_ini_file }}" state: touch -- name: Add location section to config file +- name: Add 'location' variable values to {{ iiab_ini_file }} ini_file: - dest: "{{ iiab_ini_file }}" + path: "{{ iiab_ini_file }}" section: location option: "{{ item.option }}" value: "{{ item.value }}" @@ -18,7 +18,7 @@ - name: Add 'version' variable values to {{ iiab_ini_file }} ini_file: - dest: "{{ iiab_ini_file }}" + path: "{{ iiab_ini_file }}" section: version option: "{{ item.option }}" value: "{{ item.value }}" From 9dcdb749155d912759da29ac31d272fbb5452b81 Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 18:17:44 -0400 Subject: [PATCH 05/11] Update fl.yml --- roles/0-init/tasks/fl.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/0-init/tasks/fl.yml b/roles/0-init/tasks/fl.yml index f8d93144c..3f9c8c584 100644 --- a/roles/0-init/tasks/fl.yml +++ b/roles/0-init/tasks/fl.yml @@ -1,4 +1,4 @@ -- name: Create various library directories +- name: Create 21 directories with ownership root:root and permissions 0755 (3 in /etc, 3 in {{ iiab_base }} and 15 in /library) # iiab_base is /opt/iiab file: path: "{{ item }}" owner: root @@ -7,6 +7,8 @@ state: directory with_items: - /etc/iiab + - /etc/sysconfig/olpc-scripts/ + - /etc/sysconfig/olpc-scripts/setup.d/installed/ - "{{ yum_packages_dir }}" - "{{ pip_packages_dir }}" - "{{ downloads_dir }}" @@ -25,10 +27,8 @@ - "{{ doc_root }}/common/images" - "{{ doc_root }}/common/assets" - "{{ doc_root }}/common/services" - - /etc/sysconfig/olpc-scripts/ - - /etc/sysconfig/olpc-scripts/setup.d/installed/ -- name: Create symlink from webfonts to fonts +- name: Symlink from {{ doc_root }}/common/webfonts to {{ doc_root }}/common/fonts file: src: "{{ doc_root }}/common/fonts" path: "{{ doc_root }}/common/webfonts" From 2af06529eafd6cecc89b554c11b71c2d6eae31d6 Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 18:29:55 -0400 Subject: [PATCH 06/11] Update hostname.yml --- roles/0-init/tasks/hostname.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/roles/0-init/tasks/hostname.yml b/roles/0-init/tasks/hostname.yml index 56c8e8e9b..3e64c3637 100644 --- a/roles/0-init/tasks/hostname.yml +++ b/roles/0-init/tasks/hostname.yml @@ -1,21 +1,21 @@ -- name: Is ubuntu-18 server +- name: Does /etc/cloud/cloud.cfg exist i.e. is this ubuntu-18 server? stat: path: /etc/cloud/cloud.cfg register: U18_server -- name: Edit cloud.cfg yaml +- name: Put 'preserve_hostname: true' in /etc/cloud/cloud.cfg (ubuntu-18 server) lineinfile: - dest: /etc/cloud/cloud.cfg + path: /etc/cloud/cloud.cfg regexp: '^preserve_hostname*' line: 'preserve_hostname: true' state: present when: U18_server is defined and U18_server.stat.exists -- name: Turn the crank for systemd (debuntu) +- name: 'Turn the crank for systemd: hostnamectl set-hostname "{{ iiab_hostname }}.{{ iiab_domain }}" (debuntu)' shell: hostnamectl set-hostname "{{ iiab_hostname }}.{{ iiab_domain }}" when: is_debuntu -- name: Configure /etc/sysconfig/network (redhat) +- name: Install /etc/sysconfig/network from template (redhat) template: src: roles/network/templates/network/sysconfig.network.j2 dest: /etc/sysconfig/network @@ -24,9 +24,9 @@ mode: 0644 when: is_redhat -- name: Configure short hostname in /etc/hosts +- name: Put hostnames "127.0.0.1 localhost.localdomain localhost box {{ iiab_hostname }}" in /etc/hosts lineinfile: - dest: /etc/hosts + path: /etc/hosts regexp: '^127\.0\.0\.1' line: '127.0.0.1 localhost.localdomain localhost box {{ iiab_hostname }}' owner: root From f318d3bf19afc9d2948b25429a29693674441cac Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 19:06:29 -0400 Subject: [PATCH 07/11] Update main.yml --- roles/0-init/tasks/main.yml | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/roles/0-init/tasks/main.yml b/roles/0-init/tasks/main.yml index d4903c189..cf11061cd 100644 --- a/roles/0-init/tasks/main.yml +++ b/roles/0-init/tasks/main.yml @@ -5,7 +5,7 @@ path: "{{ iiab_env_file }}" register: NewInstall -- name: Setting first run flag +- name: Set first_run flag set_fact: first_run: True when: not NewInstall.stat.exists @@ -36,30 +36,30 @@ # nobridge: True when: ansible_local.local_facts.os == "raspbian" -- name: Set exFAT enabled for XO laptops +- name: Set exFAT_enabled if xo_model != "none" set_fact: exFAT_enabled: True when: xo_model != "none" # Discover: do we have a gateway? # If Ansible detects gateway, becomes WAN candidate. -- name: Finding gateway +- name: "Do we have a gateway? If so set discovered_wan_iface: {{ ansible_default_ipv4.alias }}, iiab_wan_iface: {{ discovered_wan_iface }}" set_fact: discovered_wan_iface: "{{ ansible_default_ipv4.alias }}" iiab_wan_iface: "{{ discovered_wan_iface }}" when: ansible_default_ipv4.gateway is defined -- name: Verify gateway present +- name: Verify gateway active (using ping) shell: ping -c4 "{{ ansible_default_ipv4.gateway }}" | grep icmp_seq=4 | wc -l when: discovered_wan_iface != "none" register: gw_active_test -- name: Recording gateway response +- name: If so, set gw_active set_fact: gw_active: True when: discovered_wan_iface != "none" and gw_active_test.stdout == "1" -- name: Test for Internet access +- name: Test for Internet access ({{ iiab_download_url }}/heart-beat.txt) get_url: url: "{{ iiab_download_url }}/heart-beat.txt" dest: /tmp/heart-beat.txt @@ -70,12 +70,12 @@ # poll: 2 register: internet_access_test -- name: Set internet_available true if wget succeeded +- name: Set internet_available if download succeeded and not disregard_network set_fact: internet_available: True when: not internet_access_test.failed and not disregard_network -- name: Remove Internet test file +- name: Remove downloaded Internet test file /tmp/heart-beat.txt file: path: /tmp/heart-beat.txt state: absent @@ -84,17 +84,17 @@ - name: If the TZ is not set in env, set it to UTC include_tasks: tz.yml -- name: Set port 80 for Admin Console +- name: Set port 80 for Admin Console if not adm_cons_force_ssl set_fact: gui_port: 80 when: not adm_cons_force_ssl -- name: Set port 443 for Admin Console +- name: Set port 443 for Admin Console if adm_cons_force_ssl set_fact: gui_port: 443 when: adm_cons_force_ssl -- name: Require MySQL to be on (mandatory in Stage 3!) +- name: Turn on both vars for MySQL (mandatory in Stage 3!) set_fact: mysql_install: True mysql_enabled: True @@ -103,18 +103,18 @@ # when: elgg_enabled or rachel_enabled or owncloud_enabled or phpmyadmin_enabled or wordpress_enabled or iiab_menu_install # Late 2017: Had commented out MongoDB on a trial basis, for a more basic/lightweight Sugarizer, per https://github.com/iiab/iiab/pull/427 -- name: Turn on vars for MongoDB if Sugarizer enabled +- name: Turn on both vars for MongoDB if sugarizer_enabled set_fact: mongodb_install: True mongodb_enabled: True when: sugarizer_enabled # There might be other db's -- name: Turn on vars for PostgreSQL if Moodle or Pathagar enabled +- name: Turn on both vars for PostgreSQL if moodle_enabled or pathagar_enabled set_fact: postgresql_install: True postgresql_enabled: True - when: moodle_enabled or (pathagar is defined and pathagar_enabled) + when: moodle_enabled or (pathagar_enabled is defined and pathagar_enabled) #- name: Turn on vars for Docker if SchoolTool is to be installed # set_fact: @@ -122,12 +122,12 @@ # docker_enabled: True # when: schooltool_enabled or schooltool_install -- name: Set python_path (redhat) +- name: "Set python_path: /lib/python2.7/site-packages/ (redhat)" set_fact: python_path: /lib/python2.7/site-packages/ when: is_redhat -- name: Set python_path (debuntu) +- name: "Set python_path: /usr/local/lib/python2.7/dist-packages/ (debuntu)" set_fact: python_path: /usr/local/lib/python2.7/dist-packages/ when: is_debuntu @@ -135,28 +135,28 @@ # For various reasons the mysql service cannot be enabled on Fedora 20, but # 'mariadb', which is its real name can. On Fedora 18 we need to use 'mysqld'. -- name: Set mysql_service to mariadb by default +- name: "Set mysql_service: mariadb by default" set_fact: mysql_service: mariadb -- name: Set mysql_service to mysqld etc (Fedora 18) +- name: "Set mysql_service: mysqld etc (Fedora 18)" set_fact: mysql_service: mysqld no_NM_reload: True is_F18: True when: (ansible_distribution_release == "based on Fedora 18" or ansible_distribution_version == "18") and ansible_distribution == "Fedora" -- name: Set mysql_service to mysql (debuntu) +- name: "Set mysql_service: mysql (debuntu)" set_fact: mysql_service: mysql when: is_debuntu -- name: Set FQDN +- name: "Set iiab_fqdn: {{ iiab_hostname }}.{{ iiab_domain }}" set_fact: iiab_fqdn: "{{ iiab_hostname }}.{{ iiab_domain }}" FQDN_changed: False -- name: FQDN changed +- name: Set FQDN_changed when iiab_fqdn != ansible_fqdn ({{ ansible_fqdn }}) set_fact: FQDN_changed: True when: iiab_fqdn != ansible_fqdn From ea424929e701ee4707e37b63a98f69a8ce01866f Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 19:17:27 -0400 Subject: [PATCH 08/11] Update first_run.yml --- roles/0-init/tasks/first_run.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/0-init/tasks/first_run.yml b/roles/0-init/tasks/first_run.yml index 0c3b01281..ff349424d 100644 --- a/roles/0-init/tasks/first_run.yml +++ b/roles/0-init/tasks/first_run.yml @@ -1,5 +1,5 @@ - name: Create the directory structure for IIAB include_tasks: fl.yml -- name: Write iiab_ini.yml for the first time +- name: Run iiab_ini.yml, creating {{ iiab_ini_file }} include_tasks: iiab_ini.yml From de5f3c5cd228ce68f7490c3eda56c1291a402d32 Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 19:20:35 -0400 Subject: [PATCH 09/11] Update first_run.yml --- roles/0-init/tasks/first_run.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/0-init/tasks/first_run.yml b/roles/0-init/tasks/first_run.yml index ff349424d..3a8fa2770 100644 --- a/roles/0-init/tasks/first_run.yml +++ b/roles/0-init/tasks/first_run.yml @@ -1,5 +1,5 @@ -- name: Create the directory structure for IIAB +- name: Create IIAB directory structure include_tasks: fl.yml -- name: Run iiab_ini.yml, creating {{ iiab_ini_file }} +- name: Create {{ iiab_ini_file }} include_tasks: iiab_ini.yml From 7539cc295941342a877a5672c74fc111b90bce64 Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 19:21:28 -0400 Subject: [PATCH 10/11] Update main.yml --- roles/0-init/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/0-init/tasks/main.yml b/roles/0-init/tasks/main.yml index cf11061cd..bbdd59d89 100644 --- a/roles/0-init/tasks/main.yml +++ b/roles/0-init/tasks/main.yml @@ -12,7 +12,7 @@ # We need to inialize the ini file and only write the location and version # sections once and only once to preserve the install date and git hash. -- name: Write iiab_ini.yml for the first time +- name: Create IIAB directory structure and {{ iiab_ini_file }}, if first_run include_tasks: first_run.yml when: first_run From 380963d417400f4e5b37891e027ba6b951c952cc Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 2 Nov 2018 19:24:15 -0400 Subject: [PATCH 11/11] Update main.yml --- roles/0-init/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/0-init/tasks/main.yml b/roles/0-init/tasks/main.yml index bbdd59d89..59cd5d2ed 100644 --- a/roles/0-init/tasks/main.yml +++ b/roles/0-init/tasks/main.yml @@ -49,7 +49,7 @@ iiab_wan_iface: "{{ discovered_wan_iface }}" when: ansible_default_ipv4.gateway is defined -- name: Verify gateway active (using ping) +- name: "Verify gateway active: ping -c4 {{ ansible_default_ipv4.gateway }}" shell: ping -c4 "{{ ansible_default_ipv4.gateway }}" | grep icmp_seq=4 | wc -l when: discovered_wan_iface != "none" register: gw_active_test