Ну что ж, пробуем инсталлировать софт в Linux. Хорошая новость - для Linux в Ansible имеется модуль с названием package, который предпринимает попытку определения верного диспетчера пакетов для его использования на основании той операционной системы, для которой выполняется данный плейбук.
Определить пакетный менеджер можно так:
ansible localhost -m setup | grep ansible_pkg_mgr
А выполнить так:
# This uses a variable as this changes per distribution.
- name: remove the apache package
package:
name: "{{ item }}"
state: absent
Однако тут надо учесть что один и тот же пакет может иметь разное название для разных систем:
для RHEL это httpd
для Debian/Ubuntu это apache2.
Поэтому напишем нашу роль по другому.
---
- name: Install MariaDB
hosts: all
become: yes
roles:
- installmariadb
Тогда роль installmariadb для инсталяции пакета MariaDB:
- name: Install MariaDB Server on Ubuntu or Debian
apt:
name: "{{ item }}"
state: present
loop:
- mariadb-server
- mariadb-client
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- name: Install MariaDB Server on CentOS or RHEL
yum:
name: "{{ item }}"
state: present
loop:
- mariadb-server
- mariadb
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
Роль для деинсталяции MariaDB:
- name: Install MariaDB Server on Ubuntu or Debian
apt:
name: "{{ item }}"
state: absent
loop:
- mariadb-server
- mariadb-client
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- name: Install MariaDB Server on CentOS or RHEL
yum:
name: "{{ item }}"
state: absent
loop:
- mariadb-server
- mariadb
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
Роль для инсталяции пакета без его предварительной загрузки:
- name: Install Virtus software on Ubuntu
apt:
deb: https://github.com/software.forza.com/pkg/virtus_all.deb
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- name: Install Virtus software on CentOS or RHEL
yum:
name: https://github.com/software.forza.com/pkg/virtus.noarch.rpm
state: present
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
И роль инсталляции математики без самого пакета:
- name: download virtussoft install script
get_url:
url: http://software.forza.com/scripts/install.sh
dest: /root/install.sh
mode: 0755
- name: virtussoft install (takes around 10 mins) you can see progress using: tail -f /root/virtus-install.log
shell: /root/install.sh --force --hostname {{ inventory_hostname }} --minimal --yes
args:
chdir: /root
Все необходимое прописывается в install.sh. Также в этом случае следует учесть что вызов shell будет выполнятся всегда при повторном запуске плейбука.
Удачи.
No comments:
Post a Comment
А что вы думаете по этому поводу?