From ebd82cf4a642a7a1583b24cb0f830ad60535f21b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bertrand=20N=C3=A9ron?= <bneron@pasteur.fr>
Date: Thu, 2 Dec 2021 15:11:52 +0100
Subject: [PATCH] update playbook for 2021 course

migrate to ubuntu
update list of software
---
 .gitlab-ci.yml                                |   2 +-
 Docker/Dockerfile                             |   8 +-
 Inventory/group_vars/all                      |  44 +++-----
 Inventory/hosts                               |   2 +-
 README.md                                     |  52 ++++-----
 phylogeny.yml                                 |   4 +-
 roles/gensoft/tasks/main.yml                  |  18 ++--
 .../files/usr/share/applications/lsd.desktop  |  10 --
 roles/lsd/tasks/main.yml                      |  18 ----
 roles/pastml/tasks/main.yml                   |   4 +-
 roles/system/tasks/main.yml                   | 102 ++++++++++--------
 roles/tcoffee/tasks/main.yml                  |  63 -----------
 12 files changed, 106 insertions(+), 221 deletions(-)
 delete mode 100644 roles/lsd/files/usr/share/applications/lsd.desktop
 delete mode 100644 roles/lsd/tasks/main.yml
 delete mode 100644 roles/tcoffee/tasks/main.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 37adae5..3139e79 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,7 +5,7 @@ stages:
 
 testing:
   stage: test
-  image: registry-gitlab.pasteur.fr/hub-courses/phylogeny-machines/phylogeny-ci
+  image: registry-gitlab.pasteur.fr/hub-courses/phylogeny-machines/phylogeny_ci
   script:
     - chmod 755 $CI_PROJECT_DIR
     - ansible-playbook --limit gitlab  phylogeny.yml
diff --git a/Docker/Dockerfile b/Docker/Dockerfile
index 91cc703..0e1fb5e 100644
--- a/Docker/Dockerfile
+++ b/Docker/Dockerfile
@@ -1,10 +1,8 @@
-FROM centos:centos7
+FROM ubuntu:focal
 
 MAINTAINER Bertrand Neron <bneron@pasteur.fr>
 
 USER root
 
-RUN yum clean all &&\
-    yum update -y &&\
-    yum install -y epel-release &&\
-    yum install -y ansible
\ No newline at end of file
+RUN apt-get update -y &&\
+    apt-get install -y ansible
diff --git a/Inventory/group_vars/all b/Inventory/group_vars/all
index c559642..225c88a 100644
--- a/Inventory/group_vars/all
+++ b/Inventory/group_vars/all
@@ -1,41 +1,29 @@
 ---
 
 gensoft_packs:
-  - {name: beast, vers: 'v2.4.7'}
+  - {name: beast, vers: 'v2.6.2'}
+  - {nane: beagle, vers: '5.1'}
   - {name: BMGE, vers: '1.12'}
   - {name: Clustal-Omega, vers: '1.2.4'}
   - {name: ClustalW, vers: '2.1'}
   - {name: fastme, vers: '2.1.6.1'}
-  - {name: FigTree, vers: '1.4.3'}
+  - {name: FigTree, vers: '1.4.4'}
+  - {name: goalign, vers: '0.3.5'}
+  - {name: gotree, vers: '0.4.2'}
   - {name: gblocks, vers: '0.91b'}
-  - {name: IQ-TREE, vers: '1.6.3'}
+  - {name: iq-tree, vers: '2.0.6'}
   - {name: jmodeltest2, vers: '2.1.10'}
-  - {name: mafft, vers: '7.407'} #7.407
-  - {name: mrbayes, vers: '3.2.6'}
+  - {name: lsd2, vers: '1.9.7'}
+  - {name: mafft, vers: '7.467'} #7.407
+  - {name: mrbayes, vers: '3.2.7'}
   - {name: msaprobs, vers: '1.0.5'}
   - {name: muscle, vers: '3.8.31'}
-  - {name: paml, vers: '4.9e'}
+  - {name: paml, vers: '4.9j'}
   - {name: pamlX, vers: '1.3.1'}
   - {name: phylip, vers: '3.67'}
-  - {name: phyml, vers: '3.1'}
-  - {name: seaview, vers: '4.6.2.1'}
-
-gensoft_menu:
-  - {pack_name: seaview, bin_name: seaview, vers: '4.6.2.1', term: 'false'}
-  - {pack_name: FigTree, bin_name: figtree, vers: '1.4.3', term: 'false'}
-  - {pack_name: pamlX, bin_name: pamlX, vers: '1.3.1', term: 'false'}
-  - {pack_name: beast, bin_name: beast, vers: 'v2.1.2', term: 'true'}
-  - {pack_name: ClustalW, bin_name: clustalw, vers: '2.1', term: 'true'}
-  - {pack_name: fastme, bin_name: fastme, vers: '2.1.4', term: 'true'}
-  - {pack_name: gblocks, bin_name: Gblocks, vers: '0.91b', term: 'true'}
-  - {pack_name: mafft, bin_name: mafft, vers: '7.310', term: 'true'}
-  - {pack_name: mrbayes, bin_name: mb, vers: '3.2.6', term: 'true'}
-  - {pack_name: phylip, bin_name: protpars, vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: dnapars,  vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: protdist, vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: dnadist,  vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: neighbor, vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: consense, vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: drawtree, vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: drawgram, vers: '3.67', term: 'true'}
-  - {pack_name: phylip, bin_name: seqboot, vers: '3.67', term: 'true'}
+  - {name: phyml, vers: '3.3.20190909'}
+  - {name: raxml, vers: '8.2.12'}
+  - {name: raxml-ng, vers: '1.0'}
+  - {name: seaview, vers: '5.0.1'}
+  - {name: tracer, vers: '1.7.1'}
+  - {name: treetime, vers: '0.7.4'}
diff --git a/Inventory/hosts b/Inventory/hosts
index d8a244f..320fc59 100644
--- a/Inventory/hosts
+++ b/Inventory/hosts
@@ -8,6 +8,6 @@
 157.99.191.[172:175]
 
 
-[phylogeny-ci]
+[phylogeny_ci]
 gitlab   ansible_connection=local
 
diff --git a/README.md b/README.md
index b14ea68..10d948d 100644
--- a/README.md
+++ b/README.md
@@ -6,22 +6,27 @@ It also use *gensoft* yum repository then it will work for hosts operating *Cent
 
 The installed packages are:
 - beast
+- beagle
 - bmge
-- clustalW
 - clustaO
+- clustalW
 - fastme
 - FigTree
 - IQ-TREE
+- goalign
+- gotree
 - jmodeltest2
+- lsd
 - mafft
-- mr bayes
+- mrbayes
 - msaprobs
 - muscle
-- palm and pamlx
+- palm
+- raxml
+- raxml-ng
 - seaview
-- tcoffee
+- tracer
 - pastml
-- lsd
 
 and
 - the libreoffice suite
@@ -44,29 +49,8 @@ and
 
 The framework used to install the host is ansible.
 So if you are not familiar with it, please check the [ansible documentation](http://docs.ansible.com/ansible/latest/index.html).    
-Ansible need to be installed on the local host, 
-python >= 2.6, <3 and ssh must be installed on the remote hosts
-
-## copy your public key to the remote host
-
-First you have to copy your public shh key on each remote hosts using ssh-copy-id
-for instance on host 157.99.191.140:
-
-```
-ssh-copy-id -i ~/.ssh/id_rsa.pub 157.99.191.140
-/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/bneron/.ssh/id_rsa.pub"
-/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
-/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
-bneron@157.99.191.140's password: 
-
-Number of key(s) added: 1
-
-Now try logging into the machine, with:   "ssh '157.99.191.140'"
-and check to make sure that only the key(s) you wanted were added.
-```
-
-*note: if you want to add key in root account `ssh-copy-id -i ~/.ssh/id_rsa.pub root@157.99.191.140`
-which is the default for this ansible playbook.*
+Ansible needs to be installed on the local host, 
+python >= 2.7 or >=3.5 and ssh must be installed on the remote hosts
 
 ## play the ansible playbook
 
@@ -81,17 +65,17 @@ vim Inventory/hosts
 then run it
 
 ```
-ansible-playbook phylogeny.yml
+ansible-playbook --limit phylogeny -u formateur --ask-pass --become  phylogeny.yml
 ```
-If you want to play only one or a set of playbook see available tags in phylogeny.yml
 
+If you want to play only one or a set of playbook see available tags in practices.yml then add option `-t <tag>`
 then run
 
 ```
-ansible-playbook  -t editors phylogeny.yml
+ansible-playbook  --limit phylogeny -u formateur --ask-pass --become -t editors phylogeny.yml
 ``` 
 
-# how to installed a new soft
+# how to install a new soft
 
 # from a gensoft package
 
@@ -106,7 +90,7 @@ just add an item in the gensoft_packs dict located Inventory/group_vars/all file
 You have to write a new role and add it in the phylogeny.yml playbook
 and play the role
 
-# add an entry in the phylogenie menu
+# add an entry in the phylogeny menu
 
 If the entry you want to add is installed via gensoft (see above),
 you just have to add an item in the gensoft_menu dict located Inventory/group_vars/all files 
@@ -124,7 +108,7 @@ then play the tag menu
 ansible-playbook  -t menu phylogeny.yml
 ```
 
-if i'ts a new gensoft package run the entire role gensoft:
+if it's a new gensoft package run the entire role gensoft:
 
 ```
 ansible-playbook  -t gensoft phylogeny.yml
diff --git a/phylogeny.yml b/phylogeny.yml
index 1a221c1..cb5b2f9 100644
--- a/phylogeny.yml
+++ b/phylogeny.yml
@@ -1,6 +1,6 @@
 ---
 - name: Install software required by the Phylogeny course
-  hosts: phylogeny:phylogeny-ci
+  hosts: phylogeny:phylogeny_ci
   remote_user: root
 
   roles:
@@ -8,7 +8,5 @@
     - {role: editors, tags: ['editors']}
     - {role: office, tags: ['office']}
     - {role: gensoft, tags: ['gensoft']}
-    - {role: tcoffee, tags: ['tcoffee']}
     - {role: pastml, tags: ['pastml']}
-    - {role: lsd, tags: ['lsd']}
 
diff --git a/roles/gensoft/tasks/main.yml b/roles/gensoft/tasks/main.yml
index b49f4a1..63fda89 100644
--- a/roles/gensoft/tasks/main.yml
+++ b/roles/gensoft/tasks/main.yml
@@ -1,10 +1,10 @@
 ---
 
 - name: Intstalling gensoft scientific pacakges
-  yum:
+  ansible.builtin.apt:
     name: "gensoft-{{ item.name }}-{{ item.vers }}"
     state: latest
-  with_items: "{{ gensoft_packs }}"
+  loop: "{{ gensoft_packs|flatten(levels=1) }}"
 
 
 - name: Load all modules by default system wide
@@ -14,10 +14,10 @@
     mode: 0644
 
 
-- name: Put application in Menu
-  template:
-    src: templates/usr/share/applications/template.desktop.j2
-    dest: "/usr/share/applications/{{ item.bin_name }}.desktop"
-  with_items: "{{ gensoft_menu }}"
-  tags: menu
-
+# - name: Put application in Menu
+#   template:
+#     src: templates/usr/share/applications/template.desktop.j2
+#     dest: "/usr/share/applications/{{ item.bin_name }}.desktop"
+#   with_items: "{{ gensoft_menu }}"
+#   tags: menu
+#
diff --git a/roles/lsd/files/usr/share/applications/lsd.desktop b/roles/lsd/files/usr/share/applications/lsd.desktop
deleted file mode 100644
index 795de2a..0000000
--- a/roles/lsd/files/usr/share/applications/lsd.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-# {{ ansible_managed }}
-[Desktop Entry]
-Version=v0.3.2-beta
-Name=lsd
-Exec=/usr/local/bin/lsd
-Type=Application
-Terminal=true
-Categories=Phylogeny;
-StartupWMClass=lsd
-X-Desktop-File-Install-Version=0.15
\ No newline at end of file
diff --git a/roles/lsd/tasks/main.yml b/roles/lsd/tasks/main.yml
deleted file mode 100644
index 883be34..0000000
--- a/roles/lsd/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-
-- name: Set lsd prefix
-  set_fact:
-    lsd_prefix: /usr/local
-    lsd_version: v0.3.3
-
-- name: Downloading lsd binary
-  get_url:
-    url: "https://github.com/tothuhien/lsd-0.3beta/releases/download/{{ lsd_version }}/lsd_unix"
-    dest: "{{ lsd_prefix }}/bin/lsd"
-    mode: 555
-
-- name: Put lsd in Menu
-  copy:
-    src: files/usr/share/applications/lsd.desktop
-    dest: /usr/share/applications/lsd.desktop
-    mode: 0644
diff --git a/roles/pastml/tasks/main.yml b/roles/pastml/tasks/main.yml
index e75cf5f..dfbbdaa 100644
--- a/roles/pastml/tasks/main.yml
+++ b/roles/pastml/tasks/main.yml
@@ -2,10 +2,10 @@
 
 - name: Install Python3
   yum:
-    name: ['python36', 'python36-pip']
+    name: ['python3', 'python3-pip']
     state: latest
 
 - name: Install PastML
   pip:
-    executable: pip3.6
+    executable: pip3
     name: pastml
diff --git a/roles/system/tasks/main.yml b/roles/system/tasks/main.yml
index bcc4d8e..55e8e6d 100644
--- a/roles/system/tasks/main.yml
+++ b/roles/system/tasks/main.yml
@@ -1,28 +1,35 @@
 ---
 
-- name: Install EPEL repo.
-  yum:
-    name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
-    state: present
+- name: Installing gnupg2
+  ansible.builtin.apt:
+    name: gnupg2
+    state: latest
+
 
-- name: Import EPEL GPG key.
-  rpm_key:
-    key: /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
+- name: Download the gensoft debian packages signing key
+  ansible.builtin.apt_key:
+    url: http://mirrors.web.pasteur.fr/gensoft/ubuntu/deb/public.pgp
     state: present
 
+
 - name: add gensoft repos
-  yum_repository:
-    name: gensoft
-    description: packages provided by pasteur
-    baseurl: http://mirrors.web.pasteur.fr/gensoft/rpm/
-    gpgcheck: no
+  ansible.builtin.apt_repository:
+    filename: gensoft.list
+    repo: "deb http://mirrors.web.pasteur.fr/gensoft/ubuntu/deb/ /"
+    update_cache: yes
+    state: present
+
+- name: add gensoft private repos
+  ansible.builtin.apt_repository:
+    filename: gensoft_private.list
+    repo: "deb http://mirrors.web.pasteur.fr/gensoft/ubuntu/deb_private/ /"
+    update_cache: yes
+    state: present
 
-- name: upgrade all packages
-  yum: name=* state=latest update_cache=yes
 
 - name: install general dependencies
-  yum:
-    name: ['zlib-devel', 'readline-devel', 'make', 'unzip', 'tar', 'gensoft-modules-3.3', 'gensoft-gcc-4.9.0' ]
+  ansible.builtin.apt:
+    pkg: ['zlib1g-dev', 'libreadline-dev', 'make', 'unzip', 'tar', 'gensoft-modules-4.4.0', 'gensoft-gcc-10.1.0' ]
     state: latest
 
 - name: Create gensoft group
@@ -39,35 +46,36 @@
     shell: /bin/bash
     state: present
 
-- name: Check whether Phylogeny exist in applications menu"
-  command: grep -Fq "<Directory>Phylogeny.directory</Directory>" /etc/xdg/menus/applications.menu
-  register: check_menu
-  check_mode: no
-  ignore_errors: yes
-  changed_when: no
-
-- name: Create an entry in applications menu
-  when: check_menu.rc == 1
-  blockinfile:
-    marker: ''
-    path: /etc/xdg/menus/applications.menu
-    insertafter: "^.*<!-- End Internet -->.*$"
-    content: |
-      <!-- Phylogeny -->
-      <Menu>
-        <Name>Phylogeny</Name>
-        <Directory>Phylogeny.directory</Directory>
-        <Include>
-          <And>
-            <Category>Phylogeny</Category>
-            <Not><Category>Settings</Category></Not>
-          </And>
-        </Include>
-      </Menu>
-      <!-- End Phylogeny -->
 
-- name: Create Phylogeny menu
-  copy:
-    src: files/usr/share/desktop-directories/Phylogeny.directory
-    dest: /usr/share/desktop-directories/Phylogeny.directory
-    mode: 0644
+# - name: Check whether Phylogeny exist in applications menu"
+#   command: grep -Fq "<Directory>Phylogeny.directory</Directory>" /etc/xdg/menus/applications.menu
+#   register: check_menu
+#   check_mode: no
+#   ignore_errors: yes
+#   changed_when: no
+#
+# - name: Create an entry in applications menu
+#   when: check_menu.rc == 1
+#   blockinfile:
+#     marker: ''
+#     path: /etc/xdg/menus/applications.menu
+#     insertafter: "^.*<!-- End Internet -->.*$"
+#     content: |
+#       <!-- Phylogeny -->
+#       <Menu>
+#         <Name>Phylogeny</Name>
+#         <Directory>Phylogeny.directory</Directory>
+#         <Include>
+#           <And>
+#             <Category>Phylogeny</Category>
+#             <Not><Category>Settings</Category></Not>
+#           </And>
+#         </Include>
+#       </Menu>
+#       <!-- End Phylogeny -->
+#
+# - name: Create Phylogeny menu
+#   copy:
+#     src: files/usr/share/desktop-directories/Phylogeny.directory
+#     dest: /usr/share/desktop-directories/Phylogeny.directory
+#     mode: 0644
diff --git a/roles/tcoffee/tasks/main.yml b/roles/tcoffee/tasks/main.yml
deleted file mode 100644
index 50af2ba..0000000
--- a/roles/tcoffee/tasks/main.yml
+++ /dev/null
@@ -1,63 +0,0 @@
----
-
-- name: Set tcoffee prefix
-  set_fact:
-    tcoffee_prefix: /usr/local
-    tcoffee_version: T-COFFEE_installer_Version_12.00.7fb08c2_linux_x64
-
-- name: Creating dir source for t-coffee
-  file:
-    path: "{{ tcoffee_prefix }}/src/tcoffee"
-    state: directory
-
-
-- name: Downloading t-coffee
-  get_url:
-    url: " http://www.tcoffee.org/Packages/Stable/Latest/{{ tcoffee_version }}.tar.gz"
-    dest: "{{ tcoffee_prefix }}/src/tcoffee"
-
-
-- name: Unarchive t-coffee
-  unarchive:
-    src: "{{ tcoffee_prefix }}/src/tcoffee/{{ tcoffee_version }}.tar.gz"
-    dest: "{{ tcoffee_prefix }}/src/tcoffee/"
-    creates: "{{ tcoffee_prefix }}/src/tcoffee/{{ tcoffee_version }}"
-    copy: no
-
-
-- name: Creating directory in libexe
-  file:
-    path: "{{ tcoffee_prefix }}/libexec/tcoffee"
-    state: directory
-    mode: 0755
-
-
-- name: Copying executales in libexe dir
-  command: cp -a "{{ tcoffee_prefix }}/src/tcoffee/{{ tcoffee_version }}/{{ item }}" "{{ tcoffee_prefix }}/libexec/tcoffee/"
-  with_items:
-    - bin
-    - lck
-    - mcoffee
-    - methods
-    - perl
-    - plugins
-
-
-- name: Creating link to executable
-  file:
-    src: "{{ tcoffee_prefix }}/libexec/tcoffee/bin/t_coffee"
-    dest: "{{ tcoffee_prefix }}/bin/t_coffee"
-    state: link
-
-
-- name: Installing library required by t-coffee
-  yum:
-    name: ['libgfortran', 'argtable-devel']
-    state: latest
-
-
-- name: Installing t-coffee third party software
-  yum:
-    name: ['gensoft-ClustalW-2.1', 'gensoft-mafft-7.310', 'gensoft-msaprobs-1.0.5', 'gensoft-muscle-3.8.31']
-    state: latest
-
-- 
GitLab