Главная

Thursday, 15 October 2020

Инсталлируем софт с помощью Ansible #2.

Всем привет.

Ну что ж, пробуем инсталлировать софт в 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

А что вы думаете по этому поводу?