Главная

Wednesday, 4 November 2020

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


Всем привет.

Продолжим тему инсталлирования софта с помощью Ansible в Linux. Представим задачу что у нас есть сервер mysql который привязан на адрес 127.0.0.1. А мы хотим дать к нему доступ для всех. Т.е. имеем: [mysqld] bind-address  = 127.0.0.1. А хотим указать как: [mysqld] bind-address = 0.0.0.0.

1) Пишем  наш плейбук:

---

- name: Reconfigure MariaDB Server to listen for external connections

  lineinfile:

    path: /etc/mysql/mariadb.conf.d/50-server.cnf

    regexp: '^bind-address\s+='

    line: 'bind-address = 0.0.0.0'

    insertafter: '^\[mysqld\]'

    state: present


- name: Restart MariaDB to pick up configuration changes

  service:

    name: mariadb

    state: restarted

Давайте задачу lineinfile рассмотрим более подробно:

-path: Сообщает своему модулю какой файл настроек изменять.

-regexp: Применяется для определения имеющейся изменяемой строки, когда она присутствует, чтобы у нас не было двух конфликтующих директив bind-address.

-line: Значение строки для замены/ вставки в изменяемый файл настроек.

-insertafter: Когда не найдено соответствие regexp (то есть данная строка не представлена в изменяемом файле), данная директива обеспечит вставку модулем lineinfile некой новой строки после имеющегося оператора [mysqld], тем самым обеспечивая его наличие в верной части данного файла.

-state: Установка в значение present обеспечивает что данная строка присутствует в изменяемом файле, даже когда нет первоначального совпадения regexp - в такой ситуации в изменяемый файл добавляется некая строка в соответствии со значением line.


2) другая задача - отключить SSH для root:

---

- name: Disable root logins over SSH

  lineinfile:

    dest: /etc/ssh/sshd_config

    regexp: "^PermitRootLogin"

    line: "PermitRootLogin no"

    state: present


3) Еще одна задача - настройкa конфигурации демона SSH. Формально конфигурация sshd_config выглядит так:

ChallengeResponseAuthentication no

UsePAM yes

X11Forwarding no

PrintMotd no

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

PasswordAuthentication no

PermitRootLogin no

Мы сохраним этот файл "sshd_config" внутри структуры своего каталога roles/ и развернём его с помощью следующих задач роли. Здесь мы пользуемся модулем Ansible copy для копирования созданного нами ранее и сохранённого внутри самой роли файла sshd_config в наш целевой хост и обеспечения что его обладатель и режим подходящие для самого демона SSH.

roles/

--- securesshd

    --- files

    |   --- sshd_config

    --- tasks

        --- main.yml


---

- name: Copy SSHd configuration to target host

  copy:

    src: files/sshd_config

    dest: /etc/ssh/sshd_config

    owner: root

    group: root

    mode: 0644


- name: Restart SSH daemon

  service:

    name: ssh

    state: restarted

---

- name: Reconfigure SSH

  hosts: all

  become: yes


  roles:

    - securesshd

   

4)  Улучшим настройку конфигурации демона SSH с уведомлением о рестарте сервиса.

Получаемый в результате каталог roles должен выглядеть так:

roles/

--- securesshd

    --- files

    |   --- sshd_config

    --- handlers

    |   --- main.yml

    --- tasks

        --- main.yml


securesshd.yml

---

- name: Copy SSHd configuration to target host

  copy:

    src: files/sshd_config

    dest: /etc/ssh/sshd_config

    owner: root

    group: root

    mode: 0644

  notify:

    - Restart SSH daemon

Теперь нам требуется в своей роли создать каталог handlers/ и добавить в неё свой ранее удалённй код обработчика, чтобы он выглядел так:

main.yml

---

- name: Restart SSH daemon

  service:

    name: ssh

    state: restarted

5)  еще один вариант настройки конфигурации демона SSH с уведомлением о рестарте сервиса.

    Restart SSH daemon выполнится только раз.

---

- name: Copy SSHd configuration to target host

  copy:

    src: files/sshd_config

    dest: /etc/ssh/sshd_config

    owner: root

    group: root

    mode: 0644

  notify:

    - Restart SSH daemon


- name: Perform an additional modification

  lineinfile:

    path: /etc/ssh/sshd_config

    regexp: '^\# Configured by Ansible'

    line: '# Configured by Ansible on {{ inventory_hostname }}'

    insertbefore: BOF

    state: present

  notify:

    - Restart SSH daemon

Успехов.

1 comment:

  1. Для Python 3:
    python3 -m http.server

    Для Python 2:
    python2 -m SimpleHTTPServer

    Serving HTTP on 0.0.0.0 port 8000 ...

    ReplyDelete

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